TCP服务器端代码:

1 // TcpSrv.cpp: 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include<Windows.h>
6 #pragma comment(lib,"ws2_32.lib")
7
8 int main()
9 {
10 //************加载套接字库*****************
11 WORD wVersionRequested;
12 WSADATA wsaData;
13 int err;
14
15 wVersionRequested = MAKEWORD(2,2);//Winsock库版本,低字节代表主版本,高字节代表副版本
16 err = WSAStartup(wVersionRequested, &wsaData);
17 if (err != 0)
18 {
19 return false;
20 }
21 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
22 {
23 WSACleanup();//终止对winsock库的使用
24 return false;
25 }
26
27 //***********创建套接字********************
28
29 //parameter int af:指定协议族,即网际域,Windows平台总是AF_INET或TF_INET
30 //parameter int type:套接字类型
31 //parameter int protocal:协议类型,一般设为0,自动设置
32 SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);
33
34 //************绑定到本机地址和端口***********
35 SOCKADDR_IN addrSrv;//本机地址结构体信息,除了sin_family,其它字段都需要采用网络字节序
36 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//htonl转换为网络字节序,转换的是u_long类型
37 addrSrv.sin_family = AF_INET;
38 addrSrv.sin_port = htons(6000);//htons转换为网络字节序,转换的是u_short类型
39
40 //绑定,由于第二个参数会随网络协议的不同而变化,所以第三个参数指定地址结构的长度
41 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv));
42
43 //*************监听************************
44 listen(sockSrv,5);//5表示连接队列
45
46 while (1)
47 {
48 SOCKADDR_IN addrClient;//用于接收客户端的地址信息
49 int len = sizeof(SOCKADDR);//这个参数必须初始化
50
51 //*************建立连接************************
52 //接受客户端的连接,返回一个新的套接字。之前的套接字sockSrv依然用于监听
53 SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
54
55 //*************发送数据************************
56 char sendBuf[100];
57 //inet_ntoa表示将网络用的ip地址转换为点分十进制的形式,并返回成字符串
58 //inet_addr将点分十进制地址转换为一个无符号整形表示形式
59 sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
60
61 send(sockConn, sendBuf, strlen(sendBuf) + 1,0);
62
63 //*************接收数据************************
64 char recvBuf[100];
65 recv(sockConn,recvBuf,100,0);
66 printf("%s",recvBuf);
67
68 //*************关闭套接字**********************
69 closesocket(sockConn);
70 }
71 // 退出while循环后,关闭sockSrv以及清理套接字即可
72
73 return 0;
74 }
TCP客户端端代码:

1 // TcpClient.cpp: 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include<Winsock2.h>
6 #pragma comment(lib,"ws2_32.lib")
7 int main()
8 {
9 //************加载套接字库*****************
10 WORD wVersionRequested;
11 WSADATA wsaData;
12 int err;
13 wVersionRequested = MAKEWORD(2,2);
14 err = WSAStartup(wVersionRequested,&wsaData);
15 if (err != 0)
16 {
17 return false;
18 }
19 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
20 {
21 WSACleanup();
22 return false;
23 }
24
25 //***********创建套接字********************
26 SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);
27
28 //************连接服务器*******************
29 SOCKADDR_IN addrSrv;
30 addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
31 addrSrv.sin_family = AF_INET;
32 addrSrv.sin_port = htons(6000);
33 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
34
35 //************接收数据*********************
36 char recvBuf[100];
37 recv(sockClient,recvBuf,100,0);
38 printf("%s\n",recvBuf);
39 //************发送数据*********************
40 send(sockClient,"This is Client",strlen("This is Client")+1,0);
41
42 closesocket(sockClient);//关闭套接字
43 WSACleanup();//终止套接字库的使用
44
45 system("pause");
46 return 0;
47 }
UDP服务端代码:

1 // udpSrv.cpp: 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include<WinSock2.h>
6 #pragma comment(lib, "ws2_32.lib")
7 int main()
8 {
9 //*************加载套接字库***************
10 WORD wVersionRequested;
11 WSADATA wsaData;
12 int err;
13
14 wVersionRequested = MAKEWORD(2, 2);
15 err = WSAStartup(wVersionRequested,&wsaData);
16
17 if (err != 0)
18 {
19 return false;
20 }
21 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
22 {
23 return false;
24 WSACleanup();
25 }
26
27 //*************创建套接字***************
28 SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0);
29
30 //*************绑定到地址结构上***************
31 SOCKADDR_IN addrSrv;
32 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
33 addrSrv.sin_family = AF_INET;
34 addrSrv.sin_port = htons(6000);
35
36 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv));
37
38 //*************接收********************
39 SOCKADDR_IN addrClient;
40 int len = sizeof(SOCKADDR);
41 char recvBuf[100];
42 recvfrom(sockSrv, recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
43 printf("%s\n", recvBuf);
44
45 //*************关闭套接字***************
46 closesocket(sockSrv);
47 WSACleanup();
48
49 system("pause");
50 return 0;
51 }
UDP客户端代码:

1 // udpClient.cpp: 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include<WinSock2.h>
6 #pragma comment(lib, "ws2_32.lib")
7
8 int main()
9 {
10 //*************加载套接字库***************
11 WORD wVersionRequested;
12 WSADATA wsaData;
13 int err;
14
15 wVersionRequested = MAKEWORD(2, 2);
16 err = WSAStartup(wVersionRequested, &wsaData);
17
18 if (err != 0)
19 {
20 return false;
21 }
22 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
23 {
24 return false;
25 WSACleanup();
26 }
27 //****************创建套接字***********************
28 SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);
29
30 //****************发送数据***********************
31 SOCKADDR_IN addrSrv;
32 addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
33 addrSrv.sin_family = AF_INET;
34 addrSrv.sin_port = htons(6000);
35 int len = sizeof(SOCKADDR);
36
37 sendto(sockClient,"hello",sizeof("hello")+1,0,(SOCKADDR*)&addrSrv,len);
38
39 //****************关闭套接字***********************
40 closesocket(sockClient);
41 WSACleanup();
42
43 system("pause");
44 return 0;
45 }
