http://andylin02.iteye.com/blog/460742
- #include <iostream>
- #include <stdio.h>
- #include <windows.h>
- using namespace std;
- #pragma comment(lib, "WS2_32.lib")
- int main()
- {
- WSADATA wsaData;
- WORD sockVersion = MAKEWORD(2, 2);
- SOCKET sock = 0;
- if (WSAStartup(sockVersion, &wsaData) != 0)
- {
- cout << "initlization failed!" << endl;
- exit(0);
- }
- sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (sock == INVALID_SOCKET)
- {
- cout << "failed socket!" << endl;
- return 0;
- }
- sockaddr_in sin;
- sin.sin_family = AF_INET;
- sin.sin_port = htons(4567);
- sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
- if (connect(sock, (sockaddr*)&sin, sizeof(sockaddr)) == -1)
- {
- cout << "connect failed!" << endl;
- return 0;
- }
- char buffer[256] = "\0";
- int nRecv = 0;
- nRecv = recv(sock, buffer, 256, 0);
- if (nRecv > 0)
- {
- buffer[nRecv] = '\0';
- cout << "reveive data: " << buffer << endl;
- }
- closesocket(sock);
- WSACleanup();
- }
- //服务端:
- #include <iostream>
- #include <stdio.h>
- #include <windows.h>
- using namespace std;
- #pragma comment(lib, "WS2_32.lib")
- int main()
- {
- WSADATA wsaData;
- WORD sockVersion = MAKEWORD(2, 2);
- SOCKET sListen = 0;
- sockaddr_in sin = {0};
- sockaddr_in remoteAddr = {0};
- char szText[] = "TCP Server Demo";
- int nAddrLen = 0;
- nAddrLen = sizeof(sockaddr_in);
- //fill sin
- sin.sin_port = htons(4567);
- sin.sin_family = AF_INET;
- sin.sin_addr.S_un.S_addr = INADDR_ANY;
- //init wsa
- if (WSAStartup(sockVersion, &wsaData) != 0)
- {
- cout << "initlization failed!" << endl;
- exit(0);
- }
- sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
- {
- cout << "bind failed!" << endl;
- return 0;
- }
- if (listen(sListen, 2) == SOCKET_ERROR)
- {
- cout << "listen failed!" << endl;
- return 0;
- }
- SOCKET sClient = INADDR_ANY;
- while (true)
- {
- sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
- if (sClient == INVALID_SOCKET)
- {
- cout << "accept failed!" << endl;
- continue;
- }
- send(sClient, szText, strlen(szText), 0);
- closesocket(sClient);
- }
- closesocket(sListen);
- WSACleanup();
- }
- //服务端:
- #include <iostream>
- #include <stdio.h>
- #include <windows.h>
- using namespace std;
- #pragma comment(lib, "WS2_32.lib")
- int main()
- {
- WSADATA wsaData;
- WORD sockVersion = MAKEWORD(2, 2);
- SOCKET sListen = 0;
- sockaddr_in sin = {0};
- sockaddr_in remoteAddr = {0};
- char szText[] = "TCP Server Demo";
- int nAddrLen = 0;
- nAddrLen = sizeof(sockaddr_in);
- //fill sin
- sin.sin_port = htons(4567);
- sin.sin_family = AF_INET;
- sin.sin_addr.S_un.S_addr = INADDR_ANY;
- //init wsa
- if (WSAStartup(sockVersion, &wsaData) != 0)
- {
- cout << "initlization failed!" << endl;
- exit(0);
- }
- sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
- {
- cout << "bind failed!" << endl;
- return 0;
- }
- if (listen(sListen, 2) == SOCKET_ERROR)
- {
- cout << "listen failed!" << endl;
- return 0;
- }
- SOCKET sClient = INADDR_ANY;
- while (true)
- {
- sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
- if (sClient == INVALID_SOCKET)
- {
- cout << "accept failed!" << endl;
- continue;
- }
- send(sClient, szText, strlen(szText), 0);
- closesocket(sClient);
- }
- closesocket(sListen);
- WSACleanup();
- }