//socket_server
#include <winsock2.h>#include <iostream>//using namespace std;
void main(){ std::cout << "Start up tcp server./n";
WSADATA wsaData; WORD sockVersion = MAKEWORD(2, 0); if(0 != WSAStartup(sockVersion, &wsaData)) { std::cout << "Failed to retrive socket verson./n"; return; } SOCKET sock_sev; sock_sev = socket(AF_INET,SOCK_STREAM, 0); if(INVALID_SOCKET == sock_sev) { std::cout << "Invalid socket."<< std::endl; WSACleanup(); return; } sockaddr_in addr_sev; addr_sev.sin_family = AF_INET; addr_sev.sin_port = htons(6111); addr_sev.sin_addr.S_un.S_addr = INADDR_ANY;
if(SOCKET_ERROR == bind(sock_sev, (sockaddr*)&addr_sev, sizeof(addr_sev))) { std::cout << "Failed to bind" << std::endl; WSACleanup(); return; } if(SOCKET_ERROR == listen(sock_sev, 10)) { std::cout << "Failed to listen./n"; WSACleanup(); return; } SOCKET sock_client; sockaddr_in addr_client; int nAddrLen = sizeof(addr_client); while(true) { char tmp[100];
sock_client = accept(sock_sev, (sockaddr*)&addr_client, &nAddrLen);
if(INVALID_SOCKET == sock_client) { std::cout << "Failet to accept./n"; continue; } sprintf(tmp, "Your IP is %s/n", inet_ntoa(addr_client.sin_addr)); send(sock_client, tmp, strlen(tmp), 0); std::cout << "Connection from " << inet_ntoa(addr_client.sin_addr) <<std::endl; char crecv[100]; int loop = 10; while(loop > 0) { recv(sock_client, crecv, 100, 0); std::cout << "recv from client: " << crecv << std::endl;
loop--; }
closesocket(sock_client); } }
//socket_client
#include <winsock2.h>#include <iostream>#include <windows.h>
void main(){ std::cout << "Start up tcp client./n";
WSADATA wsaData; WORD sockVersion = MAKEWORD(2,0); if(0 != WSAStartup(sockVersion, &wsaData)) { std::cout << "Failed to retrive socket version./n"; return; }
SOCKET sock_client; sock_client = socket(AF_INET, SOCK_STREAM, 0); if(INVALID_SOCKET == sock_client) { std::cout <<"Invalid socket./n"; WSACleanup(); return; } sockaddr_in addr_sev; addr_sev.sin_family = AF_INET; addr_sev.sin_port = htons(6111); addr_sev.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if(SOCKET_ERROR == connect(sock_client, (sockaddr*)&addr_sev, sizeof(addr_sev))) { std::cout << "Failed to connect./n"; WSACleanup(); return; } char buf[100]; int recv_size = 0; recv_size = recv(sock_client, buf, 100, 0);
if(100 > recv_size) { buf[recv_size] = '/0'; std::cout << "receive data is: "<< buf << std::endl; memset(buf, 0, sizeof(buf)); } else { std::cout << "receive data is overflow" << std::endl; } int loop = 10; char input[100]; while(loop > 0) { std::cout << "please input the words: "; gets(input); //send(sock_client, "this is client", strlen("this is client")+1, 0); send(sock_client, input, strlen(input)+1, 0); Sleep(1000);
loop--; }
char recvInfo[100]; recv(sock_client, recvInfo, 100, 0);
closesocket(sock_client); WSACleanup(); return;}
注:在Project->Settings->link选项卡中的Object/library modules: 添加ws2_32.lib