- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简单的TCP客户端
* * * * * * * * * * * * * * * * 网络编程 第二讲(1)——简单的TCP客户端 大纲 简单的TCP客户端 流程 例程 程序讲解 简单的TCP客户端——例程(SimpleTcpClient) 程序功能,连接服务器,获取服务器返回的时间并显示。 执行方式: SimpleTcpClient +IP地址 +端口号 程序分析——Step 1 //装载Socket库 WSADATA wsaData; WSAStartup(0x101, wsaData); WSAStartup [作用]用于初始化Winsock [声明]int?WSAStarup(WORD wVersionRequested, LPWSADATA lpWSAData); [参数]wVersionRequested - 要求使用Winsock的最低版本号lpWSAData - Winsock的详细资料 [返回值]当函数成功调用时返回0,失败时返回非0的值 程序分析——Step 2 //创建本地Socket SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0); socket [作用] 用于生成socket(socket Descriptor) [声明]SOCKET socket(int af, int type, int protocol); [参数] af - 地址家族(通常使用AF_INET) type - socket的种类 SOCK_STREAM : 用于TCP协议 SOCK_DGRAM : 用于UDP协议 protocol - 所使用的协议 [返回值]当函数成功调用时返回一个新的SOCKET(Socket Descriptor),失败时返回INVALID_SOCKET. 程序分析——Step 3 //设置服务器地址 sockaddr_in server; memset(server, 0, sizeof(sockaddr_in)); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr(argv[1]); server.sin_port = htons((u_short)atoi(argv[2])); socketaddr_in struct?socketaddr_in?{? unsigned?short?int?sin_family;? uint16_t?sin_port;? struct?in_addr?sin_addr;? unsigned?char?sin_zero[8];?};? struct?in_addr?{? uint32_t?s_addr;?};? sin_family?即为sa_family?sin_port?为使用的port编号?sin_addr.s_addr?为IP?地址?sin_zero?未使用。? inet_addr inet_addr函数把“xxx.xxx.xxx.xxx”的10进制的IP地址转换为32位整数表示方法 [声明]unsigned long inet_addr (const char FAR *cp ); [参数]cp - 指向用“xxx.xxx.xxx.xxx”的10进制来表示的IP地址字符串的指针 [返回值]当函数成功调用时返回用32位整数表示的IP地址(按网络字节排列顺序)失败时返回INADDR_NONE. htons 将16位主机字符顺序转换成网络字符顺序 网络字节顺序NBO(Network Byte Order):按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。 主机字节顺序(HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关 程序分析——Step 4 //连接服务器 connect(sockClient, (SOCKADDR *)server, sizeof(server)); connect [作用] 用于与服务器建立连接,发出连接请求,必须在参数中指定服务器的IP地址和端口号 [声明]int connect (SOCKET s , const struct sockaddr FAR *name , int namelen ); [参数]s - 指向用Socket函数生成的Socket Descrīptorname - 指向服务器地址的指针namelen - 该地址的长度. [返回值]当函数成功调用时返回0调用失败时返回 SOCKET_ERROR? 程序分析——Step 5 //与服务器进行通讯 char s
文档评论(0)