欢迎来到天天文库
浏览记录
ID:39474338
大小:179.72 KB
页数:11页
时间:2019-07-04
《基于TCP的Socket 编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于TCP(面向连接)的socket编程,分为客户端和服务器端。客户端的流程如下:(1)创建套接字(socket)(2)向服务器发出连接请求(connect)(3)和服务器端进行通信(send/recv)(4)关闭套接字服务器端的流程如下:(1)创建套接字(socket)(2)将套接字绑定到一个本地地址和端口上(bind)(3)将套接字设为监听模式,准备接收客户端请求(listen)(4)等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)(5)用返回的套接字和客户端进行通信(send/recv)(6)返回,等待另一个
2、客户请求。(7)关闭套接字。 下面通过一个具体例子讲解一下具体的过程和相关的函数。客户端代码,运行于vs2008[cpp] viewplaincopy1.// ClientTest.cpp : 定义控制台应用程序的入口点。 2.// 3. 4.#include "stdafx.h" 5.#include 1.#include 2.#include 3. 4.#define SERVER_PORT 5208 //侦听端口 5. 6. 7.int _tmain(int argc
3、, _TCHAR* argv[]) 8.{ 9. WORD wVersionRequested; 10. WSADATA wsaData; 11. int ret; 12. SOCKET sClient; //连接套接字 13. struct sockaddr_in saServer; //服务器地址信息 14. char *ptr; 15. BOOL fSuccess = TRUE; 16. 17. //WinSock初始化 18. wVersionRequested = MAKEWO
4、RD(2, 2); //希望使用的WinSock DLL的版本 19. ret = WSAStartup(wVersionRequested, &wsaData); //加载套接字库 20. if(ret!=0) 21. { 22. printf("WSAStartup() failed!"); 23. //return 0; 24. } 25. //确认WinSock DLL支持版本2.2 26. if(LOBYTE(wsaData.wVersion)!=2
5、
6、 HIBYT
7、E(wsaData.wVersion)!=2) 27. { 28. WSACleanup(); //释放为该程序分配的资源,终止对winsock动态库的使用 29. printf("Invalid WinSock version!"); 30. //return 0; 31. } 32. 33. //创建Socket,使用TCP协议 34. sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 35. if (sC
8、lient == INVALID_SOCKET) 36. { 37. WSACleanup(); 38. printf("socket() failed!"); 39. //return 0; 40. } 41. 42. //构建服务器地址信息 43. saServer.sin_family = AF_INET; //地址家族 44. saServer.sin_port = htons(SERVER_PORT); //注意转化为网络节序 1. saServer.
9、sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 2. 3. //连接服务器 4. ret = connect(sClient, (struct sockaddr *)&saServer, sizeof(saServer)); 5. if (ret == SOCKET_ERROR) 6. { 7. printf("connect() failed!"); 8. closesocket(sClient); //关闭套接字 9. WSAC
10、leanup(); 1
此文档下载收益归作者所有