windows下的tcp回显多线程服务器

windows下的tcp回显多线程服务器

ID:34419412

大小:50.10 KB

页数:10页

时间:2019-03-06

windows下的tcp回显多线程服务器_第1页
windows下的tcp回显多线程服务器_第2页
windows下的tcp回显多线程服务器_第3页
windows下的tcp回显多线程服务器_第4页
windows下的tcp回显多线程服务器_第5页
资源描述:

《windows下的tcp回显多线程服务器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一个基于TCP的阻塞模型的并发回显服务器-客户端程序bywindhawk一、概述网络编程普遍使用socket接口来实现网络间的进程通信,具体的TCP/IP细节被封装在内核之中,由内核完成;用户只需要使用内核提供的socketAPI来实现通信即可。Windows网络编程继承了Unix的socket接口,基本模式同Unix大同小异。但是由于两个系统的实现不同,在具体实现网络程序时仍存在一些差异。包括一些socketAPI的原型,以及并发服务器的编写方法等。二、Winsock与UnixSocket比较SocketAPIUnixWindo

2、wsWSAStartup():初始化winsock版本信息,加载动态链接库无WSADATAwsaData;IntWSAStartup(MAKEWORD(2,2),&wsaData)Socket():建立监听套接字Intsockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);成功:ul标识符;败:-1SOCKETsockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);成功:u_long句柄败:INVALID_SOCKETBind():为socket绑定一个地

3、址Intbind(sockfd,(structsockaddr*)&myaddr,sizeof(myaddr));成功:0失败:-1Intbind(sockfd,(structsockaddr*)&myaddr,sizeof(myaddr));成功:0失败:SOCKET_ERRORConnect():客户端主动发起一个连接请求,即SYN包Intconnect(sockfd,(structsockaddr*)&servaddr,sizeof(servaddr));成功:0失败:-1Intconnect(sockfd,(structs

4、ockaddr*)&servaddr,sizeof(servaddr));成功:0失败:SOCKET_ERRORlisten():将套接字设置成监听状态Intlisten(sockfd,intn);成功:0失败:-1Intlisten(sockfd,intn);成功:0失败:SOCKET_ERRORAccept():等待连接请求,返回已连接套接字Intconnfd=accept(sockfd,(structsockaddr*)&cliaddr,socket_t*len);成功:connfd失败:-1SOCKETconnfd=acc

5、ept(sockfd,(structsockaddr*)&cliaddr,int&sizeof(cliaddr));成功:connfd失败:INVALID_SOCKET关闭套接字Close(sockfd);Close(connfd);Closesocket(sockfd);Closesocket(connfd);WSACleanup();Shutdown():用于禁止在指定的套接字上发送和接受数据无Intshutdown(connfd,SD_BOTH);Intshutdown(connfd,SD_RECEIVE);Intshutd

6、own(connfd,SD_SEND);成功:0失败:SOCKET_ERROR数据发送函数:Intwrite(connfd,sendbuff,Intret=send(connfd,sendbuff,成功:返回实际发送的字节数失败:-1strlen(buff));strlen(buff),0);数据接收函数:成功:返回实际接受的字节数失败:-1Intread(connfd,recvbuff,sizeof(recvbuff));Intrecv(connfd,recvbuff,sizeof(recvbuff),0);最后一个选项作为fl

7、ags位,用于影响函数的行为,0标示没有特殊行为由上表可见,winsock与Unix的socketAPI基本上完全一致,除了关闭套接字和I/O函数略有不同以外,实现了全部继承。除了函数的不同,在一些细节上Windows与Unix也略有不同,比如:1.Unix下套接字地址结构为:structsockaddr_in{uint8_tsin_len;//套接字地址结构的长度,IPv4固定16个字节,IPv6固定28个字节sa_family_tsin_family//AF_INETin_port_tsin_port//协议端口地址,数据类型

8、为uint6,网络字节顺序structin_addrsin_addr//协议IP地址,数据类型为uint32,网络字节顺序charsin_zero[8]//unused};其中,sturctin_addr{in_addr_ts_addr;}Wind

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。