c语言网络通信编程

c语言网络通信编程

ID:8799253

大小:16.63 KB

页数:4页

时间:2018-04-08

c语言网络通信编程_第1页
c语言网络通信编程_第2页
c语言网络通信编程_第3页
c语言网络通信编程_第4页
资源描述:

《c语言网络通信编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言网络通信编程2010-07-2609:05:12我来说两句收藏我要投稿[字体:小大]网络编程的基本概念:1.基本结构structsockaddr{unsignedshortsa_family;charsa_data[14];};structsockaddr_in{shortintsin_family;unsignedshortintsin_port;structin_addrsin_addr;unsignedcharsin_zero[8];};structin_addr{unsigedlongs_addr;};说明:sockaddr结构是用于函数参数使用的,sockaddr_in其实

2、内部数据和sockaddr结构一样,只不过定义不一样,定义sockaddr_in结构只是为了编程是填入地址族,ip地址和端口方便,在调用套接字函数时,需要强制类型转换为sockaddr。为什么这么做,估计是sockaddr结构定义的比较早,所以不忍丢弃。2.基本转换函数*网络字节顺序:网络采用大尾方式,inter386采用小尾方式*网络数字转换htoshosttonetworkshorthotlhosttonetworklongntosnetworktohostshortntolnetworktohostlong*网络地址转换inet_addr()将字符串型IP地址转换为无符号longin

3、tinet_ntoa()将IP地址数字转换为字符串3.基本套接字函数这里只说其中几个比较重要的函数socket(ip_family,data_type,protocol);bind(socket,structsockaddr,len);指定一个本地的端口用来进行通信,使用本地ip和port填充结构connect(socket,structsockaddr,len);任意指定一个未用端口,内部调用bind进行绑定,使用远程ip和port填充结构listen(socket,backlog);backlog未经处理的连接请求队列中可以容纳的最大数目。accept(listen_socket,ou

4、tstructsockaddr,len);accept拿出listen函数放入等待队列中的第一条消息进行处理,然后返回这个消息的管理套接字。注意:在服务器端,函数listen会将在客户端函数connect发来的请求排成队列,然后交由accept来处理,因此函数accept返回客户端通信套接字,并返回客户端的ip地址,通信端口等信息;在客户端,connect函数在内部任意指定一个未用端口,然后绑定,用于和服务器端通信。accept如果接不到请求,会阻塞。accept如果接到请求,TCP的3次握手过程已完成,后面就可以用send和recv函数发送和接受数据。4.代码示例客户端代码:#inclu

5、de#include#include#pragmacomment(lib,"ws2_32.lib")intmain(){WSADATAWSData;SOCKETConnectSocket;if(WSAStartup(MAKEWORD(2,2),&WSData)!=0){printf("socketinitialerror!");return1;}ConnectSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(ConnectSocket==SOCKET_ERROR){printf("createsocketerror!");WSACleanu

6、p();return1;}sockaddr_inClient;Client.sin_family=AF_INET;Client.sin_addr.s_addr=inet_addr("192.168.8.21");Client.sin_port=htons(4600);//connecttoserverif(connect(ConnectSocket,(sockaddr*)&Client,sizeof(Client))!=0){printf("connecterror!");return1;}//translatedatacharSendBuf[100]="hi";send(ConnectS

7、ocket,SendBuf,lstrlenA(SendBuf)+1,0);charRecvBuf[101];recv(ConnectSocket,RecvBuf,lstrlenA(RecvBuf)+1,0);printf("%s",RecvBuf);//closesocketclosesocket(ConnectSocket);WSACleanup();return0;}服务器端代码:#include#include#i

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

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

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