简单的Windows Socket编程实例
2015-02-23 12:59
211 查看
Server(多线程)
Client
#include <iostream> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; #define PORT 4000 #define IP_ADDRESS "127.0.0.1" DWORD WINAPI ClientThread(LPVOID lpParameter) { SOCKET ClientSocket=(SOCKET)lpParameter; int ret=0; char RecvBuffer[MAX_PATH]; while(true) { memset(RecvBuffer,0x00,sizeof(RecvBuffer)); ret=recv(ClientSocket,RecvBuffer,MAX_PATH,0); if(ret==0||ret==SOCKET_ERROR) { cout<<"Exit"<<endl; break; } cout<<"收到的信息为:"<<RecvBuffer<<endl; } return 0; } int main() { WSADATA Ws; SOCKET ServerSocket,ClientSocket; struct sockaddr_in LocalAddr,ClientAddr; int ret=0; int AddrLen=0; HANDLE hThread=NULL; //Init if((WSAStartup(MAKEWORD(2,2),&Ws)!=0)) { cout<<"Init Failed:"<<GetLastError()<<endl; return -1; } //Create Socket ServerSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(ServerSocket==INVALID_SOCKET) { cout<<"Create Socket Failed:"<<GetLastError()<<endl; return -1; } LocalAddr.sin_family=AF_INET; LocalAddr.sin_addr.S_un.S_addr=inet_addr(IP_ADDRESS); LocalAddr.sin_port=htons(PORT); memset(LocalAddr.sin_zero,0x00,8); ret=bind(ServerSocket,(struct sockaddr *)&LocalAddr,sizeof(LocalAddr)); if(ret!=0) { cout<<"Bind Socket Failed:"<<GetLastError()<<endl; return -1; } ret=listen(ServerSocket,10); if(ret!=0) { cout<<"Listen Socket Failed"<<GetLastError()<<endl; return -1; } cout<<"Server Start"<<endl; while(true) { AddrLen=sizeof(ClientAddr); ClientSocket=accept(ServerSocket,(struct sockaddr *)&ClientAddr,&AddrLen); if(ClientSocket==INVALID_SOCKET) { cout<<"Accept Failed:"<<GetLastError()<<endl; break; } cout<<"客户端连接::"<<inet_ntoa(ClientAddr.sin_addr)<<":"<<ClientAddr.sin_port<<endl; hThread=CreateThread(NULL,0,ClientThread,(LPVOID)ClientSocket,0,NULL); if(hThread==NULL) { cout<<"Create Thread Failed"<<endl; break; } CloseHandle(hThread); } closesocket(ServerSocket); closesocket(ClientSocket); WSACleanup(); return 0; }
Client
#include <iostream> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; #define PORT 4000 #define IP_ADDRESS "127.0.0.1" int main() { WSADATA Ws; SOCKET ClientSocket; struct sockaddr_in ServerAddr; int ret=0; int AddrLen=0; //HANDLE hThread=NULL; char SendBuffer[MAX_PATH]; //Init if(WSAStartup(MAKEWORD(2,2),&Ws)!=0) { cout<<"Init Failed"<<endl; return -1; } //Create ClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(ClientSocket==INVALID_SOCKET) { cout<<"Socket Failed:"<<GetLastError()<<endl; return -1; } ServerAddr.sin_family=AF_INET; ServerAddr.sin_addr.S_un.S_addr=inet_addr(IP_ADDRESS); ServerAddr.sin_port=htons(PORT); memset(ServerAddr.sin_zero,0x00,8); ret=connect(ClientSocket,(struct sockaddr *)&ServerAddr,sizeof(ServerAddr)); if(ret==SOCKET_ERROR) { cout<<"Connect Error:"<<GetLastError()<<endl; return -1; } else { cout<<"Connect Success"<<endl; } while(true) { cin.getline(SendBuffer,sizeof(SendBuffer)); ret=send(ClientSocket,SendBuffer,(int)strlen(SendBuffer),0); if(ret==SOCKET_ERROR) { cout<<"Send Error:"<<GetLastError()<<endl; break; } } closesocket(ClientSocket); WSACleanup(); return 0; }
相关文章推荐
- linux socke编程实例:一个简单的echo服务器程序
- 网络编程C#篇(二):Socket面向连接简单实例
- 热门话题:使用WCF实现SOA面向服务编程(二)——实现简单的WCF开发实例
- 使用WCF实现SOA面向服务编程——简单的WCF开发实例
- 简单socket编程实例
- Socket编程简单实例
- 使用W“.NET技术”CF实现SOA面向服务编程——简单的WCF开发实例
- Linux Socket编程简单实例
- [Linux网络编程]ARP简单实例
- socket编程的最简单实例 - linux系统编程及驱动开发 - 小超嵌入式工作室 嵌入式开发学习交流论坛 XC-STC XC2440技术支持 - Powered by Discuz!
- 网络编程C#篇(二):Socket无连接简单实例 推荐
- [编程实例]linux下的以太网简单网络流量分析
- 字符串的反转 JavaScript 编程简单实例
- Linux Socket编程简单实例
- PHP命令行编程实例:FTP+SSL简单客户端示例
- linux socke编程实例:一个简单的echo服务器程序(2)
- windows socket 编程实例--TCP(2007-07-28 14:33)
- 多线程编程实例----服务器客户端简单通信
- gcc编程环境基础4--ld命令和u-boot中的lds文件实例和简单实例分析
- 一起谈.NET技术,使用WCF实现SOA面向服务编程——简单的WCF开发实例