TCP编程函数和步骤.doc_第1页
TCP编程函数和步骤.doc_第2页
TCP编程函数和步骤.doc_第3页
TCP编程函数和步骤.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TCP编程的服务器端一般步骤是1、 创建一个socket,用函数socket();2、 设置socket属性,用函数setsockopt(); * 可选3、 绑定IP地址、端口等信息到socket上,用函数bind();4、 开启监听,用函数listen();5、 接收客户端上来的连接,用函数accept();6、 收发数据,用函数send()和recv(),者read()和write();7、 关闭网络连接;8、 关闭监听;TCP编程的客户端一般步骤是:1、 创建一个socket,用函数socket();2、 设置socket属性,用函数setsockopt();* 可选3、 绑定IP地址、端口等信息到socket上,用函数bind();* 可选4、 设置要连接的对方的IP地址和端口等属性;5、 连接服务器,用函数connect();6、 收发数据,用函数send()和recv(),或者read()和write();7、 关闭网络连接;UDP编程的服务器端一般步骤是:1、 创建一个socket,用函数socket();2、 设置socket属性,用函数setsockopt();* 可选3、 绑定IP地址、端口等信息到socket上,用函数bind()4、 循环接收数据,用函数recvfrom();5、 关闭网络连接;UDP编程的客户端一般步骤是:1、 创建一个socket,用函数socket();2、 设置socket属性,用函数setsockopt();* 可选3、 绑定IP地址、端口等信息到socket上,用函数bind();* 可选4、 设置对方的IP地址和端口等属性;5、 发送数据,用函数sendto();6、 关闭网络连接;常用的网络命令:netstat命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可以使用帮助 telnettelnet是一个用来远程控制的程序,但是我们完全可以用这个程序来调试我们的服务端程序的. 比如我们的服务器程序在监听8888端口,我们可以用telnet localhost 8888来查看服务端的状况数据结构1、地址结构struct sockaddr_in short int sin_family; /* 地址族 一般为AF-INET */ unsigned short int sin_port; /* 端口号 */ struct in_addr sin_addr; /* IP地址 */ unsigned char sin_zero8; /* 填充0 以保持与struct sockaddr同样大小 使用memset()或bzero()来填充*/ ; struct sockaddr unsigned short sa_family; /* 地址族, AF_xxx */ char sa_data14; /* 14 字节的协议地址 */ ; 2、DNS结构struct hostent char *h_name; /* 主机的官方域名 */ char *h_aliases; /* 一个以NULL结尾的主机别名数组 */ int h_addrtype; /* 返回的地址类型,在Internet环境下为AF-INET */ int h_length; /*地址的字节长度 */ char *h_addr_list; /* 一个以0结尾的数组,包含该主机的所有地址*/ ;操作函数1、 socket:创建socket 描述符int socket(int domain, int type, int protocol); domainAF_INET,socket的类型,typeSOCK_STREAM 或SOCK_DGRAM,分别表示TCP连接和UDP连接;protocol0。返回一个整型socket描述符。 2.bind:将socket描述符与你本机上的一个端口相关联(仅用于服务器)int bind(int sockfd,struct sockaddr *my_addr, int addrlen);Sockfd是一个socket描述符my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;addrlensizeof(struct sockaddr)。 返回:成功0;失败-1,errno错误号。可以用下面的赋值自动获得本机IP地址和随机获取一个没有被占用的端口号: my_addr.sin_port = 0; /* 系统随机选择一个未被使用的端口号 */ my_addr.sin_addr.s_addr = INADDR_ANY; /* 填入本机IP地址 */3.Connect: 与远端服务器建立一个TCP连接 (用于客户端)int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); Sockfd是目的服务器的sockt描述符serv_addr是包含目的机IP地址和端口号的指针。返回:成功0;失败-1,errno错误号。4、Listen: 监听是否有服务请求 ,用于bind()后int listen(int sockfd, int backlog); Sockfd是Socket系统调用返回的socket 描述符;backlog指定在请求队列中允许的最大请求数,缺省值为20。返回:成功0;失败-1,errno错误号。5.accept:接受来自客户的请求int accept(int sockfd, void *addr, int *addrlen); sockfd是被监听的socket描述符,addr 是指向sockaddr_in变量的指针,存放客户主机的信息 ;addrten 指向值为sizeof(struct sockaddr_in)的整型指针变量。返回:成功返回一个新的socket描述符,来供这个新连接来使用。 错误发生时返回一个-1并且设置相应的errno值。6.Send: 在连接(TCP)的socket方式下发送信息int send(int sockfd, const void *msg, int len, int flags); Sockfd是用来传输数据的socket描述符msg是一个指向要发送数据的指针。 Len是以字节为单位的数据的长度。flags一般情况下置为0。7.recv: 在连接(TCP)的socket方式下接收数据int recv(int sockfd,void *buf,int len,unsigned int flags); Sockfd是接受数据的socket描述符;buf 是存放接收数据的缓冲区;len是缓冲的长度。Flags也被置为0。返回:实际上接收的字节数,如果连接中止,返回0,。出现错误时,返回-1并置相应的errno值。8.sendto: 在在无连接(UDP)的socket方式下发送数据 int sendto(int sockfd, const void *msg,int len,unsigned int flags,const struct sockaddr *to, int tolen); to表示目地机的IP地址和端口号信息tolen=sizeof (struct sockaddr)。返回:实际发送的数据字节长度或在出现发送错误时返回-1。9.Recvfrom()在无连接(UDP)的socket方式下接收数据int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,int *fromlen); from 保存源机的IP地址及端口号。fromlensizeof(struct sockaddr)。返回:实际存入from中的数据字节数。当出现错误时返回-1,并置相应的errno。10.close()释放socket,停止任何数据操作close(sockfd);11.shutdown:单向关闭连接int shutdown(int sockfd,int how); how可以设为下列值: 0-不允许继续接收数据 1-不允许继续发送数据 2-不允许继续发送和接收数据,均为允许则调用close () shutdown在操作成功时返回0,在出现错误时返回-1(并置相应errno)。12. gethostbyname: 域名和IP地址的转换struct hostent *gethostbyname(const char *name);13.inet_pton函数:将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理。 int inet_pton(int family,const char * strptr,void * addrptr);第一个参数可以是AF_INET或AF_INET6:第二个参数是一个指向点分十进制串的指针:第三个参数是一个指向转换后的网络字节序的二进制值的指针。 返回:1成功0输入不是有效的表达格式-1失败 14.inet_ntop函数:和inet_pton函数正好相反,inet_ntop函数是将网络字节序二进制值转换成点分十进制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论