winsock编程接口.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
winsock编程接口

* * Accept()调用实例 SOCKET s; // 监听Socket SOCKET clientSocket; // 客户Socket sockaddr_in addr; // 服务器的绑定地址 sockaddr_in clientAddr; // 连接的客户地址 IN_ADDR clientIn; // 客户IP地址 int nClientAddrLen; // 客户地址结构长度 // 创建流Socket s = socket(AF_INET, SOCK_STREAM, 0); if (s != INVALID_SOCKET) {// 填充地址信息 addr.sin_family = AF_INET; addr.sin_port = htons(2000); addr.sin_addr.s_addr = inet_addr(“”); * * Accept()调用实例 // 绑定Socket if (bind(s, (struct sockaddr*)addr, sizeof(addr)) != SOCKET_ERROR) { // 监听连接 if (listen(s, 3) != SOCKET_ERROR) { // 设置客户地址结构长度 nClientAddrLen = sizeof(clientAddr); // 接受连接 clientSocket = accept(s, (struct sockaddr*)clientAddr, nClientAddrLen); if (clientSocket == INVALID_SOCKET) { printf(accept() 调用错误:%d, WSAGetLastError()); } else { memcpy(clientIn, clientAddr.sin_addr.s_addr, 4); printf(accept() 调用成功: 客户IP地址是 %s, 端口是 %d, inet_ntoa(clientIn), ntohs(clientAddr.sin_port)); //... } } } } * * * * int status = connect (socket_id, (struct sockaddr*) addr, sizeof(addr)); sockaddr_in 结构, 描述服务器的端口和 IP 地址 Sockaddr_in 结构的字节长度 Return code (SOCKET_ERROR if error) Socket ID returned by socket function connect( ) 函数 当服务器端建立好套接字并与一个本地地址绑定后,就进入监听状态,等待客户发出连接请求。在客户端套接字建立好之后,就调用connect()函数来与服务器建立连接。 * * connect (续) int connect (SOCKET sockfd, struct sockaddr* addr, int addrLen); sockfd由socket() 调用返回 addr是指向sockaddr结构的指针,包含server IP 地址和端口号 addrLen: sizeof (struct sockaddr_in) * * Connect()函数的说明 在客户端使用该函数请求建立连接时,将激活建立连接的三次握手,用来建立到服务器TCP的连接。如果调用该函数前没有调用bind()来绑定本地地址,则由系统隐式绑定一个地址到该套接字 该函数用在UDP的客户端时,connect()函数并不是真正地发出建立请求连接的请求,调用将从本地操作系直接返回。这样可以将服务器的地址信息保存下来,在后续UDP端口发送数据时,由套接字自动在发送函数中填入服务器地址,而不需要由应用程序在调用发送函数时填入 * * int status = recv (socket_id, in_buffer, MAX_BUFFER_SIZE, 0); Return code (SOCKET_ERROR if error) Always 0 The maximum buffer size 接收数据的缓冲区的指针 Example: char in_buffer [MAX_BUFFER] Socket ID returned by socket function On success, the number of bytes received recv ( ) 函数 在套接字上接收数据, 可用在面向连接或无连接的套接字上,对面向连接的套接字上必须先建立连接,对无连接的套接字必须

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档