我常用的socket 框架
- Server端
1 int main()
2 {
3 WORD sockVersion;
4 WSADATA wsaData;
5 int rVal;
6
7 sockVersion = MAKEWORD(1,1);
8 //start dll
9 WSAStartup(sockVersion, &wsaData);
10
11 //create socket
12 SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
13
14 if(s == INVALID_SOCKET)
15 {
16 socketError("Failed socket()");
17 WSACleanup();
18 return SERVER_SOCKET_ERROR;
19 }
20
21 //fill in sockaddr_in struct
22
23 SOCKADDR_IN sin;
24 sin.sin_family = PF_INET;
25 sin.sin_port = htons(8888);
26 sin.sin_addr.s_addr = INADDR_ANY;
27
28 //bind the socket
29 rVal = bind(s, (LPSOCKADDR)&sin, sizeof(sin));
30 if(rVal == SOCKET_ERROR)
31 {
32 socketError("Failed bind()");
33 WSACleanup();
34 return SERVER_SOCKET_ERROR;
35 }
36
37 //get socket to listen
38 rVal = listen(s, 2);
39 if(rVal == SOCKET_ERROR)
40 {
41 socketError("Failed listen()");
42 WSACleanup();
43 return SERVER_SOCKET_ERROR;
44 }
45
46 //wait for a client
47 SOCKET client;
48
49 client = accept(s, NULL, NULL);
50
51 if(client == INVALID_SOCKET)
52 {
53 socketError("Failed accept()");
54 WSACleanup();
55 return SERVER_SOCKET_ERROR;
56 }
57 printf("client ok\n");
58 char buff[512] = {0};
59 //while(1)
60 //{
61 getchar();
62 recv(client, buff, 512, 0 );
63 printf("%s\n",buff);
64 ZeroMemory(buff, 512);
65 //}
66 //close process
67 closesocket(client);
68 closesocket(s);
69
70 WSACleanup();
71
72 return SOCKET_OK;
73 } - Client 端
1 #include <windows.h>
2 #include <winsock.h>
3 #include <stdio.h>
4 #pragma comment(lib, "ws2_32.lib")
5
6 #define CS_ERROR 1
7 #define CS_OK 0
8
9 void sError(char*);
10
11 int main()
12 {
13
14 WORD version;
15 WSADATA wsaData;
16 int rVal=0;
17
18 version = MAKEWORD(1,1);
19
20 WSAStartup(version,(LPWSADATA)&wsaData);
21
22 LPHOSTENT hostEntry;
23
24 //store information about the server
25 //hostEntry = gethostbyname("hibbert");
26
27 // if(!hostEntry)
28 // {
29 // printf("Failed gethostbyname()");
30 // //WSACleanup();
31 // return CS_ERROR;
32 // }
33
34 //create the socket
35 SOCKET theSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
36
37 if(theSocket == SOCKET_ERROR)
38 {
39 sError("Failed socket()");
40 return CS_ERROR;
41 }
42 //Fill in the sockaddr_in struct
43 SOCKADDR_IN serverInfo;
44 int ip = inet_addr("192.168.1.67");
45 serverInfo.sin_family = PF_INET;
46 serverInfo.sin_addr.S_un.S_addr = ip;
47
48 serverInfo.sin_port = htons(8888);
49
50 rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
51 if(rVal==SOCKET_ERROR)
52 {
53 printf("Failed connect()");
54 return CS_ERROR;
55 }
56 printf("connect() success\n");
57
58 char buf[512] = "hello you fucking socket";
59 for (int i =0;i < 10; i++)
60 {
61 send(theSocket, buf, 512, 0);
62 printf("send over\n");
63 }
64
65 closesocket(theSocket);
66 WSACleanup();
67 //MessageBoxA(NULL, "Connection was made", "SOCKET", MB_OK);
68 return CS_OK;
69 }
70
71 void sError(char *str)
72 {
73 //MessageBoxA(NULL, str, "SOCKET ERROR", MB_OK);
74 WSACleanup();
75 }
76
posted on 2010-05-14 11:35 Imagination 阅读(5083) 评论(0) 编辑 收藏 举报