全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 语言网络通信编程 2010-07-26 09:05:12 我来说两句 收藏 我要投稿 字体:小 大 网络编程的基本概念: 1. 基本结构 struct sockaddr unsigned short sa_family; char sa_data14; ; struct sockaddr_in short int sin_family; unsigned short int sin_port; struct in_addr sin_addr; unsigned char sin_zero8; ; struct in_addr unsiged long s_addr; ; 说明:sockaddr 结构是用于函数参数使用的,sockaddr_in 其实内部数据和 sockaddr 结构一 样,只不过定义不一样,定义 sockaddr_in 结构只是为了编程是填入地址族,ip 地址和端口 方便,在调用套接字函数时,需要强制类型转换为 sockaddr。为什么这么做,估计是 sockaddr 结构定义的比较早,所以不忍丢弃。 2. 基本转换函数 *网络字节顺序:网络采用大尾方式,inter386 采用小尾方式 *网络数字转换 htos host to network short hotl host to network long ntos network to host short ntol network to host long *网络地址转换 inet_addr() 将字符串型 IP 地址转换为无符号 long int inet_ntoa() 将 IP 地址数字转换为字符串 3. 基本套接字函数 这里只说其中几个比较重要的函数 socket(ip_family,data_type,protocol); bind(socket, struct sockaddr, len); 指定一个本地的端口用来进行通信,使用本地 ip 和 port 填充结构 connect(socket,struct sockaddr,len); 任意指定一个未用端口,内部调用 bind 进行绑定,使用远程 ip 和 port 填充结构 listen(socket,backlog); backlog 未经处理的连接请求队列中可以容纳的最大数目。 accept(listen_socket,out struct sockaddr,len); accept 拿出 listen 函数放入等待队列中的第一条消息进行处理,然后返回这个消息的管理 套接字。 注意:在服务器端,函数 listen 会将在客户端函数 connect 发来的请求排成队列,然后交由 accept 来处理,因此函数 accept 返回客户端通信套接字,并返回客户端的 ip 地址,通信端 口等信息;在客户端,connect 函数在内部任意指定一个未用端口,然后绑定,用于和服务 器端通信。 accept 如果接不到请求,会阻塞。 accept 如果接到请求,TCP 的 3 次握手过程已完成,后面就可以用 send 和 recv 函数发送和 接受数据。 4. 代码示例 客户端代码: #include #include #include #pragma comment(lib,“ws2_32.lib“) int main() WSADATA WSData; SOCKET ConnectSocket; if (WSAStartup(MAKEWORD(2,2), return 1; ConnectSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (ConnectSocket = SOCKET_ERROR) printf(“create socket error! “); WSACleanup(); return 1; sockaddr_in Client; Client.sin_family = AF_INET; Client.sin_addr.s_addr = inet_addr(“192.168.8.21“); Client.sin_port = htons(4600); / connect to server if (connect(ConnectSocket,(sockaddr*) return 1; / translate data char SendBuf100 = “hi“; send(ConnectSocket,SendBuf,lstrlenA(SendBuf)+1,0); char RecvBuf101; recv(ConnectSocket,RecvBuf,lstrlenA(RecvBuf)+1,0); printf(“%s “,RecvBuf); / close socket closesocket(ConnectSocket); WSACleanup(); return 0; 服务器端代码: #include #include #include #pragma comment(lib,“ws2_32.lib“) int main() WSADATA wsaData; SOCKET ListenSocket; int iResult; / 初始化 socket iResult = WSAStartup(MAKEWORD(2,2), if(iResult != 0) printf(“WSAStartup failed:%d “,iResult); return 1; / 创建 socket ListenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (ListenSocket = INVALID_SOCKET) printf(“Error at socket():%d “,WSAGetLastError(); WSACleanup(); return 1; / band socket sockaddr_in service; service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr(“192.168.8.21“); service.sin_port = htons(4600); if (bind(ListenSocket,(sockaddr*) closesocket(ListenSocket); return 1; / listen socket if (listen(ListenSocket,SOMAXCONN) = SOCKET_ERROR) printf(“listen() failed. “); closesocket(ListenSocket); return 1; / accept a socket and use it recv or send sockaddr_in Client; SOCKET ConnectSocket; int len = sizeof(sockaddr_in); while (1) ConnectSocket= accept(ListenSocket,(sockaddr*) char RecvBuf100; recv(ConnectSocket,RecvBuf,lstrlenA(RecvBuf)+1,0); printf(“%s “,RecvBuf); char SendBuf10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 2 Colours and Clothes Lesson 7公开课教学课件【七年级英语上册(冀教版)】
- 【初中语+文】《虽有嘉肴》课件+统编版语文八年级下册
- 2024年生活时尚-出国知识笔试参考题库含答案
- 2024年甘肃住院医师-甘肃住院医师口腔正畸科笔试参考题库含答案
- 2024年火电电力职业技能鉴定考试-变电运行工笔试参考题库含答案
- 美丽中国风景作文800字高中
- 2024年河南住院医师-河南住院医师中医眼科笔试参考题库含答案
- 2024年水路交通运输技能考试-船舶钳工笔试参考题库含答案
- 市政机械项目商业计划书及实施方案|瑞克咨询|2024年编|
- 2024年机械制造行业技能考试-铆工笔试参考题库含答案
- 铣床夹具课程设计说明书
- 个人征信报告模板2020年word版可编辑
- 摄影镜头一览表类别英文中文说明人物镜头DetailShot...-WikiaImages
- 工程合约部岗位职责(共8篇)
- 公司董事会决议格式的规定公司董事会决议
- 一年级珠算练习题
- 校园网网络性能分析与优化-大学本科毕业论文毕业设计学位论文范文模板参考资料
- 井下电焊安全技术措施
- VFP程序设计典型例题汇总
- 信贷员销售技巧和话术
- GB∕T25027-2018搪玻璃开式搅拌容器型式、主要尺寸及基本参数
评论
0/150
提交评论