1 // soClient.cpp : Defines the entry point for the console application.
2 //
3
4 #include "stdafx.h"
5 #include <winsock2.h>
6 #pragma comment(lib,"ws2_32.lib")
7
8 int _tmain(int argc, _TCHAR* argv[])
9 {
10 WSADATA wsadata;
11 WORD dVer=MAKEWORD(2,2);
12 WSAStartup(dVer,&wsadata);
13
14 SOCKET S=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
15 if(S==INVALID_SOCKET)
16 {
17 return FALSE;
18 }
19 sockaddr_in serverAddr;
20 serverAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
21 serverAddr.sin_family=AF_INET;
22 serverAddr.sin_port=htons(4567);
23 if(::connect(S,(LPSOCKADDR)&serverAddr,sizeof(serverAddr))==SOCKET_ERROR)
24 {
25 if(WSAGetLastError()==10061)
26 {
27 printf("服務器未開啟");
28 }
29 return FALSE;
30 }
31
32 char buff[256];
33 int irecv=::recv(S,buff,256,0);
34 if(irecv>0)
35 {
36 buff[irecv] = '\0'; //返回數據不會結束所以人工添加
37 printf("返回數據為:%s",buff);
38 }
39
40 closesocket(S);
41 return 0;
42 }
服務器
1 // soServer.cpp : Defines the entry point for the console application.
2 //
3
4 #include "stdafx.h"
5 #include "winsock2.h"
6 #pragma comment(lib,"ws2_32.lib")
7
8 int _tmain(int argc, _TCHAR* argv[])
9 {
10 WSADATA wsadata;
11 WORD dVer=MAKEWORD(2,2);
12 if(WSAStartup(dVer,&wsadata)!=0)
13 {
14 return FALSE;
15 }
16
17 sockaddr_in sin;
18 sin.sin_family=AF_INET;
19 sin.sin_addr.S_un.S_addr=INADDR_ANY;
20 sin.sin_port=htons(4567);
21 SOCKET S=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
22
23
24 if(::bind(S,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
25 {
26 return FALSE;
27 }
28
29 if(::listen(S,2)==SOCKET_ERROR)
30 {
31 return FALSE;
32 }
33
34 sockaddr_in remoteAddr;
35 int nAddrLen = sizeof(remoteAddr);
36 SOCKET sClient;
37 char text[]="you have connected!welcome!";
38 printf("等待接受連接。\r\n");
39 while(TRUE)
40 {
41 sClient=::accept(S,(LPSOCKADDR)&remoteAddr,&nAddrLen);
42 if(sClient==SOCKET_ERROR)
43 {
44 printf("獲取失敗");
45 continue;
46 }
47 printf("接收到新連接:%s",inet_ntoa(remoteAddr.sin_addr));
48 send(sClient,text,strlen(text),0);
49 closesocket(sClient);
50 }
51 closesocket(S);
52 return 0;
53 }