- 博客(29)
- 资源 (3)
- 收藏
- 关注
转载 socket编程---服务器端与客户端简单通信
服务器端:[cpp] view plain copy print?/* * File: main.cpp * Author: xiaomo * * Created on 2011年6月22日, 下午8:07 */ #include #include #include #include
2017-05-28 11:17:26 441
转载 socket通信---并发服务器图解和阻塞通信图解
当服务器处理一个客户请求可能需要相当长一段时间的时候,使用迭代服务器模式(即整个服务器可能被耽搁客户长期占用)是会影响系统性能的。而处理并发连接的服务器可以称为并发服务器。 并发服务器的一个简单操作是fork一个子进程来服务多个客户。当一个连接建立时,用于阻塞进程的aceept返回,服务器接着调用fork来创建一个子进程,该子进程通过已连接套接口connfd服务客户;而父进程就可以通过
2017-05-27 20:19:56 405
转载 unix网络编程 学习笔记(精华)
1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要知道一些常用的网络命令
2017-05-26 15:33:10 7146
转载 Linux下Socket写http协议下载文件代码以及说明
项目一部分需要使用socket写http协议,并下载文件,看似简单得问题,调试起来确有一些小小得问题,如果是windows平台的话,自然会简单很多,一个DownloadFile API就可以搞定,可是客户得Proj是在Linux下,不得已,从头开发了。目前得代码由于依然在win下面调试,所以移植得时候稍微注意一下就可以了。看代码:#include #include #inc
2017-05-25 16:00:44 531
转载 网络超时select和setsockopt的区别和问答
更详细资料:http://hi.baidu.com/vc_net/item/095fea515d32b3dcd58bac57setsockopt与select区别:setsockopt是通过信号来处理的, 超时的时候,read/write返回-1, 而且精度是毫秒级,同时只能一个句柄阻塞.select可以设置更高的精度(微秒), 同时可以处理多个句柄的阻塞.
2017-05-24 12:03:12 1225
转载 unix域socket通信实例
socket服务器端:server.c [html] view plain copy print?//socket读写默认的是非阻塞的 [html] view plain copy print?pre class="cpp" name="code">#include stdi
2017-05-23 12:24:46 877 1
转载 socket通信之http-server
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl
2017-05-22 12:36:26 345
转载 TCP/IP协议——TCP/IP协议栈及框架
1 基于4层的TCP/IP协议栈基本描述基于4层的TCP/IP协议栈最具说服力的是:这一观点是由TCP/IP原始标准的创立者——美国国防部提出的,它与ISO/OSI参考模型的对应关系如下图:图1 TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系如图1所示,TCP/IP协议栈从低层开始,依次为网络存取层、网络互连层、传输层和应用层,具体描述如下:
2017-05-21 10:28:48 904
转载 提高 Linux 上 socket 性能
加速网络应用程序的 4 种方法M. Tim Jones ,资深软件工程师,Emulex2006 年 2 月 13 日使用 SocketsAPI,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制
2017-05-20 12:40:41 981
转载 send,recv,sendto,recvfrom
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符
2017-05-19 11:29:56 258
转载 LINUX C网络编程中的心跳机制
在TCP网络通信中,经常会出现客户端和服务器之间的非正常断开,需要实时检测查询链接状态。常用的解决方法就是在程序中加入心跳机制。从网络上找到,主要有以下方法实现TCP异常断开的检测:SO_KEEPALIVE,SIO_KEEPALIVE_VALS和Heart-Beat线程。(1)SO_KEEPALIVE 机制 这是socket库提供的功能,设置接口是setsock
2017-05-18 11:36:25 1312
转载 使用UNIX域函数进行套接字编程
《Linux网络编程》第11章高级套接字,本章介绍高级套接字的编程,包含UNIX域的函数、广播、多播、数据链路层的程序设计等在Linux网络程序设计中比较常用的方法。本节为大家介绍使用UNIX域函数进行套接字编程。AD:11.1.3 使用UNIX域函数进行套接字编程使用UNIX域函数进行套接字编程与AF_INET的方式一致,不同的地
2017-05-17 10:40:41 394
转载 linux下客户端检测服务器的 heartbeat
对于heartbeat检测,常用的是在通迅协议上面做,比如pgpool,一台机器会定时向另一台新建一个联接,写和读一些特定字符,之后关闭这个检测用的连接,能连上表明对方没有挂机 对于通过TCP/IP本身这样做,网上win平台下面的例子比较多,相对Linux,MS确实增加了一些特定的函数来检测状态,LINUX下面就没有特定的函数这样做了 下面这部分代码就是通过TCP/
2017-05-16 11:03:47 426
转载 UNIX Domain Socket IPC (Linux C编程一站式学习)
UNIX Domain Socket IPCsocket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护
2017-05-15 10:10:13 356
转载 warning: pointer targets in passing argument 3 of ‘accept’ differ in signedness
The first warning tells you you have the wrong type for parameter 3 of accept. It wants a 'socklen_t *', but you are giving it an 'int *'. Declare client_length to be the right type.[cpp] view
2017-05-14 12:17:19 2211
转载 Linux下Socket编程中用send发送结构体
Socket中的send函数可以发送字符串,但不能直接发送结构体,因此在发送端先把结构体转成字符串,然后用send发送,在接收端recv字符串,再转换成原先的结构体,这个就是解决问题的主要思路,实现中要注意的问题在下文阐述。 为了客户端之间能够互相通信,实现私聊,我采用服务器转发的方式,因此用户发送的每条消息中除了消息主体外,还必须包含有发送者、接收者ID等信息,如此采用结构体便是最佳的
2017-05-13 11:02:34 825
转载 Linux下Socket相关头文件总结
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问。二 基本
2017-05-12 12:36:26 539
转载 udp发送结构体实例
发送端 client.c//server1 发送数据[cpp] view plain copy print?#include "stock.h" #define MYPORT 8866 /*定义端口为8866*/ int main(int argc,char *argv[])
2017-05-11 10:50:49 2888 1
转载 Unix domain socket 的一些小结
http://blog.csdn.NET/wlh_flame/article/details/6358795#By fireworks2@foxmail.com找了大半天的资料,收获也不多,其实还是自己思考更靠谱一些。1. unix域的数据报服务是否可靠 man unix 手册即可看到,unix domain
2017-05-10 12:18:00 942
转载 python 应用 IPy 计算IP/掩码的网络地址
python 应用 IPy 计算IP/掩码的网络地址from IPy import IPdef ipnetwork(ip, mask): return IP(ip).make_net(mask)def issamenetwork(ip1, mask1, ip2, mask2): return ipnetwork(ip1, mask1) =
2017-05-09 12:38:05 1717
转载 Linux Socket网络编程(理论分析+充足的示例)
什么是SocketSocket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输
2017-05-08 15:31:23 321
转载 SSL握手过程
一、SSL握手有三个目的:1. 客户端与服务器需要就一组用于保护数据的算法达成一致;2. 它们需要确立一组由那些算法所使用的加密密钥;3. 握手还可以选择对客户端进行认证。二、SSL握手过程:1. 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;2. 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含
2017-05-07 13:09:48 3273
转载 LINUX聊天室50问
==================================== LINUX聊天室50问====================================1.问题:怎么实现多个终端?监听?2.一个聊天室程序,到底会分解成哪一些步骤呢?3.开启一个 Socket,绑定到另一个端口,并且一直监听此端口。4.服务器是得有很多个SOCK
2017-05-06 08:48:01 485
转载 *** glibc detected *** malloc(): memory corruption(二)
通常我们会犯的内存问题大概有以下几种: 1.内存重复释放,出现double free时,通常是由于这种情况所致。 2.内存泄露,分配的内存忘了释放。 3.内存越界使用,使用了不该使用的内存。 4.使用了无效指针。 5.空指针,对一个空指针进行操作。 对于第一种和第二种,第五种情况,就不用多说,会产生什么后果大家应该都很清楚。 第四种情况,通常是指操作已释放的对象,如:
2017-05-05 10:06:02 1619
转载 *** glibc detected *** malloc(): memory corruption(一)
*** glibc detected *** malloc(): memory corruption: 0x09eab988 *** 发现是由于memset越界写引起的。 在Linux Server上不好模拟出来:不过若是先malloc,再越界memset,再free此内存块,然后malloc新内存块就会出现类似错误。#include#include#includeint mai
2017-05-04 21:13:42 3506
转载 密码不回显函数(二)
值得注意的是前面两个函数都是从键盘读入数据! 还有getchar是很值得研究的:getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。 而getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符。getchar带有显示。 与前面两个函数的区别在于:
2017-05-03 13:39:11 777
转载 密码不回显函数(一)
getch getche getchar的区别和缓冲区的概念 今天同学问我一个问题,.Net上编译C程序最后的结果总是一闪而过。记得有个函数能够实现其功能,于是分不清这几个函数之间的关系,总结一下。1.输入输出缓冲区的概念(C++用的多一些) 我想以一个例子说明,比如我想把一篇文章以字符序列的方式输出到计算机显示器屏幕上,那么我的程序内存作为数据源而显示器驱动程序作为数据
2017-05-02 09:32:33 1573
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人