- 论坛徽章:
- 0
|
- #include <stdio.h>
- #include <winsock.h>
- #pragma comment(lib, "ws2_32.lib")
- int main(int argc, char *argv[])
- {
- WSADATA wsaData;
- if ( WSAStartup( MAKEWORD(2,2), &wsaData ) != 0 )
- {
- printf("init error: %d\n",WSAGetLastError());
- return -1;
- }
- int iPort = 8002;
- if (argc > 1)
- {
- iPort = atoi(argv[1]);
- }
- if (argc > 2)
- {
- g_isendpackage = atoi(argv[2]);
- }
- printf("port %d len %d\n", iPort, g_isendpackage);
- SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- sockaddr_in service;
- service.sin_family = AF_INET;
- service.sin_addr.s_addr = 0;
- service.sin_port = htons(iPort);
- if (bind(sock, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR)
- {
- printf("bind() failed. %d\n", WSAGetLastError());
- closesocket(sock);
- return -1;
- }
- if (listen(sock, 5) == SOCKET_ERROR)
- {
- printf("listen failed %d\n", WSAGetLastError());
- return -1;
- }
- printf("listen success\n");
- while(true)
- {
- SOCKET accsock = accept(sock, NULL, NULL);
- if (accsock == SOCKET_ERROR)
- {
- continue;
- }
- HANDLE hrecv = CreateThread(NULL, 0, recvthread, (void*)accsock, 0, NULL);
- CloseHandle(hrecv);
- HANDLE hsend = CreateThread(NULL, 0, sendthread, (void*)accsock, 0, NULL);
- CloseHandle(hsend);
- }
- WSACleanup();
- return 0;
- }
复制代码 VC++2005编译的 |
|