linux:
tcpclient.cpp

1 #include<iostream>
2 #include<unistd.h>
3 #include<sys/types.h>
4 #include<sys/socket.h>
5 #include<netdb.h>
6 #include<arpa/inet.h>
7 #include<cstring>
8 #include<sstream>
9
10 using namespace std;
11
12 #define BUFSIZE 512
13
14 // #define SERVERIP "192.168.41.32"
15 // #define SERVERPORT 4140
16
17 /*error report*/
18 static void bail(const char *on_what){
19 fputs(strerror(errno), stderr);
20 fputs(": ", stderr);
21 fputs(on_what, stderr);
22 fputc('\n', stderr);
23 exit(1);
24 }
25
26 void getarg(int argc,char* argv[],const char** SERVERIP,int* SERVERPORT)
27 {
28 for(int i=0;i<argc;i++)
29 {
30 istringstream iss(argv[i]);
31 string str;
32 iss>>str;
33 if(str=="ip")
34 {
35 *SERVERIP=argv[i+1];
36 }
37 else if(str=="port")
38 {
39 istringstream sts(argv[i+1]);
40 string s_port;
41 sts>>s_port;
42 *SERVERPORT=stoi(s_port);
43 }
44 else
45 {
46
47 }
48
49 }
50 }
51
52 int main(int argc,char *argv[])
53 {
54 const char* SERVERIP="192.168.43.230";
55 int SERVERPORT=4140;
56
57 getarg(argc,argv,&SERVERIP,&SERVERPORT);
58
59 int sockfd;
60 struct sockaddr_in server_addr;
61 const char* sendbuf = (char*)"hello,this is client";
62 char recvbuf[BUFSIZE];
63
64 //create socket
65 if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) <0)//创建套接字
66 {
67 fprintf(stderr,"Socket error %s\n",strerror(errno));
68 exit(-1);
69 }
70
71 memset(&server_addr,0, sizeof(server_addr));
72 server_addr.sin_family = AF_INET;
73 server_addr.sin_port = htons(SERVERPORT);
74 server_addr.sin_addr.s_addr = inet_addr(SERVERIP);
75
76 if ((connect(sockfd, (struct sockaddr*) & server_addr, sizeof(struct sockaddr))) < 0)//连接远程对等实体
77 {
78 fprintf(stderr,"connect error %s\n",strerror(errno));
79 exit(-1);
80 }
81
82 if ((send(sockfd, sendbuf, strlen(sendbuf), 0)) != strlen(sendbuf))//发送数据
83 {
84 fprintf(stderr,"send error %s\n",strerror(errno));
85 exit(-1);
86 }
87
88 memset(recvbuf, '\0',sizeof(recvbuf));
89 while (true)
90 {
91 int num = recv(sockfd, recvbuf, sizeof(recvbuf), 0);//接受数据
92 if (num < 0)
93 {
94 fprintf(stderr,"recv error %s\n",strerror(errno));
95 exit(-1);
96 }
97 else
98 {
99 cout << recvbuf << endl;
100 break;
101 }
102 }
103
104 cout<<"exit..."<<endl;
105
106 close(sockfd);//终止通信并释放套接字描述符
107
108 return 0;
109 }
tcpserv.cpp

1 #include<iostream>
2 #include<string.h>
3 #include <unistd.h>
4 #include<sys/types.h>
5 #include<sys/socket.h>
6 #include<netdb.h>
7 #include<arpa/inet.h>
8
9 #define BUFSIZE 512
10 #define PORT 4140
11 #define MAXLISTEN 128
12
13 /*error report*/
14 static void bail(const char *on_what){
15 fputs(strerror(errno), stderr);
16 fputs(": ", stderr);
17 fputs(on_what, stderr);
18 fputc('\n', stderr);
19 exit(1);
20 }
21
22 int main()
23 {
24 int sockfd;//server fd
25 // int port;
26 int newfd;//connect fd
27 struct sockaddr_in server_addr;
28 struct sockaddr_in client_addr;
29
30 char reqbuf[BUFSIZE];
31
32 /*create server socket*/
33 if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)//创建套接字
34 {
35 fprintf(stderr,"Socket error %s\n",strerror(errno));
36 exit(-1);
37 }
38
39 /*ready for server addr*/
40 memset(&server_addr,0,sizeof(server_addr));
41 server_addr.sin_family=AF_INET;
42 server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
43 server_addr.sin_port=htons(PORT);
44
45 /*bind socket addr*/
46 int tmp=bind(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr));//将ip和port绑定到套接字上
47 if(tmp<0)
48 {
49 fprintf(stderr,"Bind error %s\n",strerror(errno));
50 exit(-1);
51 }
52
53 /*listen*/
54 if((listen(sockfd,MAXLISTEN))<0)//将套接字设置为被动模式
55 {
56 fprintf(stderr,"Listen error %s\n",strerror(errno));
57 exit(-1);
58 }
59 std::cout<<"waiting for client ..."<<std::endl;
60
61 /*server main while*/
62 // while(true)
63 // {
64 socklen_t size;
65 size=sizeof(struct sockaddr_in);
66
67 /*accept client & create new fd*/
68 if((newfd=accept(sockfd,(struct sockaddr*)&client_addr,&size))<0)//接受传入连接请求
69 {
70 fprintf(stderr,"Accept error %s\n",strerror(errno));
71 exit(-1);
72 }
73 std::cout<<"Server got connect from "<<inet_ntoa(client_addr.sin_addr)<<std::endl;
74
75 /*recv data from client*/
76 if((recv(newfd,reqbuf,sizeof(reqbuf),0))<0)//获取数据
77 {
78 fprintf(stderr,"Recv error %s\n",strerror(errno));
79 exit(-1);
80 }
81 std::cout<<reqbuf<<std::endl;
82
83 /*send data to client*/
84 char *sendbuf=(char*)"hello,this is server.";
85 if((send(newfd,sendbuf,strlen(sendbuf),0))!=strlen(sendbuf))//发送数据
86 {
87 fprintf(stderr,"Send error %s\n",strerror(errno));
88 exit(-1);
89 }
90
91 /*close new fd*/
92 close(newfd);//终止通信并释放套接字描述符
93 // }
94
95 /*close server fd*/
96 close(sockfd);//释放套接字描述符
97
98 std::cout<<"exit"<<std::endl;
99
100 return 0;
101 }
udpclient.cpp

1 #include<iostream>
2 #include <unistd.h>
3 #include<sys/types.h>
4 #include<sys/socket.h>
5 #include<netdb.h>
6 #include<arpa/inet.h>
7 #include<cstring>
8 #include<sstream>
9
10 using namespace std;
11
12 #define BUFSIZE 512
13
14 // #define SERVERIP "192.168.2.169"
15 // #define SERVERPORT 4140
16
17 /*error report*/
18 static void bail(const char *on_what){
19 fputs(strerror(errno), stderr);
20 fputs(": ", stderr);
21 fputs(on_what, stderr);
22 fputc('\n', stderr);
23 exit(1);
24 }
25
26 void getarg(int argc,char* argv[],const char** SERVERIP,int* SERVERPORT)
27 {
28 for(int i=0;i<argc;i++)
29 {
30 istringstream iss(argv[i]);
31 string str;
32 iss>>str;
33 if(str=="ip")
34 {
35 *SERVERIP=argv[i+1];
36 }
37 else if(str=="port")
38 {
39 istringstream sts(argv[i+1]);
40 string s_port;
41 sts>>s_port;
42 *SERVERPORT=stoi(s_port);
43 }
44 else
45 {
46
47 }
48
49 }
50 }
51
52 int main(int argc,char* argv[])
53 {
54 const char* SERVERIP="192.168.41.32";
55 int SERVERPORT=4140;
56
57 getarg(argc,argv,&SERVERIP,&SERVERPORT);
58
59 int sockfd;
60 struct sockaddr_in server_addr;
61 struct sockaddr_in client_addr;
62 char* sendbuf = (char*)"hello,this is client";
63 char recvbuf[BUFSIZE];
64
65 //create socket
66 if ((sockfd = socket(AF_INET, SOCK_DGRAM,0)) <0)//创建套接字描述符
67 {
68 fprintf(stderr,"socket error %s\n",strerror(errno));
69 exit(-1);
70 }
71
72 memset(&server_addr, 0,sizeof(server_addr));
73 server_addr.sin_family = AF_INET;
74 server_addr.sin_port = htons(SERVERPORT);
75 server_addr.sin_addr.s_addr = inet_addr(SERVERIP);
76
77 // if ((connect(sockfd, (struct sockaddr*) & server_addr, sizeof(struct sockaddr))) < 0)
78 // {
79 // cout << "Connect Error::" << GetLastError() << endl;
80 // return -1;
81 // }
82
83 if ((sendto(sockfd, sendbuf, strlen(sendbuf), 0,(struct sockaddr*)&server_addr,sizeof(struct sockaddr_in))) != strlen(sendbuf))//发送数据
84 {
85 fprintf(stderr,"sendto error %s\n",strerror(errno));
86 exit(-1);;
87 }
88
89 memset(&client_addr,0,sizeof(client_addr));
90 memset(recvbuf, '\0',sizeof(recvbuf));
91 while (true)
92 {
93 socklen_t len=sizeof(struct sockaddr_in);
94 int num = recvfrom(sockfd, recvbuf, sizeof(recvbuf), 0,(struct sockaddr*)&client_addr,&len);//获取数据
95 if (num < 0)
96 {
97 fprintf(stderr,"Socket error %s\n",strerror(errno));
98 exit(-1);
99 }
100 else
101 {
102 cout << recvbuf << endl;
103 break;
104 }
105 }
106
107 close(sockfd);//终止通信并释放套接字描述符
108
109 return 0;
110 }
udpserv.cpp

1 #include<iostream>
2 #include<string.h>
3 #include <unistd.h>
4 #include<sys/types.h>
5 #include<sys/socket.h>
6 #include<netdb.h>
7 #include<arpa/inet.h>
8 // #include<signal.h>
9
10 #define BUFSIZE 512
11 #define PORT 4140
12 #define MAXLISTEN 128
13
14
15 /*error report*/
16 static void bail(const char *on_what){
17 fputs(strerror(errno), stderr);
18 fputs(": ", stderr);
19 fputs(on_what, stderr);
20 fputc('\n', stderr);
21 exit(1);
22 }
23
24 int main()
25 {
26 int sockfd;//server fd
27 // int port;
28 int newfd;//connect fd
29 struct sockaddr_in server_addr;
30 struct sockaddr_in client_addr;
31
32 char reqbuf[BUFSIZE];
33
34
35 /*create server socket*/
36 if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)//创建套接字描述符
37 {
38 fprintf(stderr,"Socket error %s\n",strerror(errno));
39 exit(-1);
40 }
41
42 /*ready for server addr*/
43 memset(&server_addr,0,sizeof(server_addr));
44 server_addr.sin_family=AF_INET;
45 server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
46 server_addr.sin_port=htons(PORT);
47
48 /*bind socket addr*/
49 if((bind(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr)))<0)//将ip和port绑定到套接字上
50 {
51 fprintf(stderr,"Bind error %s\n",strerror(errno));
52 exit(-1);
53 }
54
55 /*server main while*/
56 // while(true)
57 // {
58 socklen_t size;
59 size=sizeof(struct sockaddr_in);
60 memset(&client_addr,0,sizeof(client_addr));
61
62 /*recv data from client*/
63 if((recvfrom(sockfd,reqbuf,sizeof(reqbuf),0,(struct sockaddr*)&client_addr,&size))<0)//获取数据
64 {
65 fprintf(stderr,"Recvfrom error %s\n",strerror(errno));
66 exit(-1);
67 }
68 std::cout<<reqbuf<<std::endl;
69
70 /*send data to client*/
71 char *sendbuf=(char*)"hello,this is server.";
72 if((sendto(sockfd,sendbuf,strlen(sendbuf),0,(struct sockaddr*)&client_addr,size))!=strlen(sendbuf))//发送数据
73 {
74 fprintf(stderr,"Sendto error %s\n",strerror(errno));
75 exit(-1);
76 }
77
78 // }
79
80 /*close server fd*/
81 close(sockfd);//终止通信并释放套接字描述符
82
83 std::cout<<"exit"<<std::endl;
84
85 return 0;
86 }
windows:
tcpclient.cpp

1 #include<iostream>
2 #include<WinSock2.h>
3 #include<cstring>
4 #include<sstream>
5
6 #pragma comment(lib, "ws2_32")
7
8 using namespace std;
9
10 // #define SERVERIP "192.168.41.32"
11 // #define SERVERPORT 4140
12
13 void getarg(int argc,char* argv[],const char** SERVERIP,int* SERVERPORT)
14 {
15 for(int i=0;i<argc;i++)
16 {
17 istringstream iss(argv[i]);
18 string str;
19 iss>>str;
20 if(str=="ip")
21 {
22 *SERVERIP=argv[i+1];
23 }
24 else if(str=="port")
25 {
26 istringstream sts(argv[i+1]);
27 string s_port;
28 sts>>s_port;
29 *SERVERPORT=stoi(s_port);
30 }
31 else
32 {
33
34 }
35
36 }
37 }
38
39 int main(int argc,char *argv[])
40 {
41 const char* SERVERIP="192.168.41.32";
42 int SERVERPORT=4140;
43
44 getarg(argc,argv,&SERVERIP,&SERVERPORT);
45
46 SOCKET sockfd;
47 struct sockaddr_in server_addr;
48 WSADATA ws;
49 const char* sendbuf = (char*)"hello,this is client";
50 char recvbuf[MAX_PATH];
51
52 //init windows socket
53 if (WSAStartup(MAKEWORD(2, 2), &ws) != 0)
54 {
55 cout << "Init Windows Socket Failed::" << GetLastError() << endl;
56 return -1;
57 }
58
59 //create socket
60 if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)//创建套接字描述符
61 {
62 cout << "Create Socket Failed::" << GetLastError() << endl;
63 return -1;
64 }
65
66 ZeroMemory(&server_addr, sizeof(server_addr));
67 server_addr.sin_family = AF_INET;
68 server_addr.sin_port = htons(SERVERPORT);
69 server_addr.sin_addr.S_un.S_addr = inet_addr(SERVERIP);
70
71 if ((connect(sockfd, (struct sockaddr*) & server_addr, sizeof(struct sockaddr))) < 0)//连接远程对等实体
72 {
73 cout << "Connect Error::" << GetLastError() << endl;
74 return -1;
75 }
76
77 if ((send(sockfd, sendbuf, strlen(sendbuf), 0)) != strlen(sendbuf))//发送数据
78 {
79 cout << "Send Error::" << GetLastError() << endl;
80 return -1;
81 }
82
83 ZeroMemory(recvbuf, sizeof(recvbuf));
84 while (true)
85 {
86 int num = recv(sockfd, recvbuf, sizeof(recvbuf), 0);//获取数据
87 if (num < 0)
88 {
89 cout << "Recv Error::" << GetLastError() << endl;
90 return -1;
91 }
92 else
93 {
94 cout << recvbuf << endl;
95 break;
96 }
97 }
98
99 cout<<"exit..."<<endl;
100
101 closesocket(sockfd);//终止通信并释放套接字
102 WSACleanup();
103
104 system("pause");
105
106 return 0;
107 }
tcpserver.cpp

1 #include<iostream>
2 #include<WinSock2.h>
3 // #include<cstring>
4 // #include<unistd.h>
5
6 #pragma comment(lib, "ws2_32")
7
8 using namespace std;
9
10 #define BUFSIZE 512
11 #define PORT 4140
12 #define MAXLISTEN 128
13
14 /*error report*/
15 static void bail(const char *on_what){
16 fputs(strerror(errno), stderr);
17 fputs(": ", stderr);
18 fputs(on_what, stderr);
19 fputc('\n', stderr);
20 exit(1);
21 }
22
23 int main()
24 {
25 SOCKET sockfd;//server fd
26 // int port;
27 SOCKET newfd;//connect fd
28 struct sockaddr_in server_addr;
29 struct sockaddr_in client_addr;
30 WSADATA ws;
31
32 char reqbuf[BUFSIZE];
33
34 //init windows socket
35 if(WSAStartup(MAKEWORD(2,2),&ws)!=0)
36 {
37 cout << "Init Windows Socket Failed::" << GetLastError() << endl;
38 exit(-1);
39 }
40
41 /*create server socket*/
42 if((sockfd=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)//创建套接字描述符
43 {
44 fprintf(stderr,"Socket error %s\n",strerror(errno));
45 exit(-1);
46 }
47
48 /*ready for server addr*/
49 ZeroMemory(&server_addr,sizeof(server_addr));
50 ZeroMemory(&reqbuf,sizeof(reqbuf));
51 server_addr.sin_family=AF_INET;
52 server_addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
53 server_addr.sin_port=htons(PORT);
54
55 /*bind socket addr*/
56 int tmp=bind(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr));//将ip和port绑定到套接字上
57 if(tmp<0)
58 {
59 fprintf(stderr,"Bind error %s\n",strerror(errno));
60 exit(-1);
61 }
62
63 /*listen*/
64 if((listen(sockfd,MAXLISTEN))<0)//设置为被动模式
65 {
66 fprintf(stderr,"Listen error %s\n",strerror(errno));
67 exit(-1);
68 }
69 cout<<"waiting for client ..."<<endl;
70
71 /*server main while*/
72 // while(true)
73 // {
74 int size;
75 size=sizeof(struct sockaddr_in);
76
77 /*accept client & create new fd*/
78 if((newfd=accept(sockfd,(struct sockaddr*)&client_addr,&size))<0)//接受传入请求
79 {
80 fprintf(stderr,"Accept error %s\n",strerror(errno));
81 exit(-1);
82 }
83 cout<<"Server got connect from "<<inet_ntoa(client_addr.sin_addr)<<endl;
84
85 /*recv data from client*/
86 if((recv(newfd,reqbuf,sizeof(reqbuf),0))<0)//获取数据
87 {
88 fprintf(stderr,"Recv error %s\n",strerror(errno));
89 exit(-1);
90 }
91 cout<<reqbuf<<endl;
92
93 /*send data to client*/
94 char *sendbuf=(char*)"hello,this is server.";
95 if((send(newfd,sendbuf,strlen(sendbuf),0))!=strlen(sendbuf))//发送数据
96 {
97 fprintf(stderr,"Send error %s\n",strerror(errno));
98 exit(-1);
99 }
100
101 /*close new fd*/
102 closesocket(newfd);//终止通信并释放套接字
103 // }
104
105 /*close server fd*/
106 closesocket(sockfd);//释放套接字
107 WSACleanup();
108
109 cout<<"exit"<<endl;
110
111 return 0;
112 }
udpclient.cpp

1 #include<iostream>
2 #include<WinSock2.h>
3 #include<sstream>
4
5 #pragma comment(lib, "ws2_32")
6
7 using namespace std;
8
9 // #define SERVERIP "192.168.2.169"
10 // #define SERVERPORT 4140
11
12 void getarg(int argc,char* argv[],const char** SERVERIP,int* SERVERPORT)
13 {
14 for(int i=0;i<argc;i++)
15 {
16 istringstream iss(argv[i]);
17 string str;
18 iss>>str;
19 if(str=="ip")
20 {
21 *SERVERIP=argv[i+1];
22 }
23 else if(str=="port")
24 {
25 istringstream sts(argv[i+1]);
26 string s_port;
27 sts>>s_port;
28 *SERVERPORT=stoi(s_port);
29 }
30 else
31 {
32
33 }
34
35 }
36 }
37
38 int main(int argc,char* argv[])
39 {
40 const char* SERVERIP="192.168.41.32";
41 int SERVERPORT=4140;
42
43 getarg(argc,argv,&SERVERIP,&SERVERPORT);
44
45 SOCKET sockfd;
46 struct sockaddr_in server_addr;
47 struct sockaddr_in client_addr;
48 WSADATA ws;
49 char* sendbuf = (char*)"hello,this is client";
50 char recvbuf[MAX_PATH];
51
52 //init windows socket
53 if (WSAStartup(MAKEWORD(2, 2), &ws) != 0)
54 {
55 cout << "Init Windows Socket Failed::" << GetLastError() << endl;
56 return -1;
57 }
58
59 //create socket
60 if ((sockfd = socket(AF_INET, SOCK_DGRAM,0)) == INVALID_SOCKET)//创建套接字描述符
61 {
62 cout << "Create Socket Failed::" << GetLastError() << endl;
63 return -1;
64 }
65
66 ZeroMemory(&server_addr, sizeof(server_addr));
67 server_addr.sin_family = AF_INET;
68 server_addr.sin_port = htons(SERVERPORT);
69 server_addr.sin_addr.S_un.S_addr = inet_addr(SERVERIP);
70
71 // if ((connect(sockfd, (struct sockaddr*) & server_addr, sizeof(struct sockaddr))) < 0)
72 // {
73 // cout << "Connect Error::" << GetLastError() << endl;
74 // return -1;
75 // }
76
77 if ((sendto(sockfd, sendbuf, strlen(sendbuf), 0,(struct sockaddr*)&server_addr,sizeof(struct sockaddr_in))) != strlen(sendbuf))//发送数据
78 {
79 cout << "Send Error::" << GetLastError() << endl;
80 return -1;
81 }
82
83 ZeroMemory(&client_addr,sizeof(client_addr));
84 ZeroMemory(recvbuf, sizeof(recvbuf));
85 while (true)
86 {
87 int len=sizeof(struct sockaddr_in);
88 int num = recvfrom(sockfd, recvbuf, sizeof(recvbuf), 0,(struct sockaddr*)&client_addr,&len);//获取数据
89 if (num < 0)
90 {
91 cout << "Recv Error::" << GetLastError() << endl;
92 return -1;
93 }
94 else
95 {
96 cout << recvbuf << endl;
97 break;
98 }
99 }
100
101 closesocket(sockfd);//终止通信并释放套接字
102 WSACleanup();
103
104 system("pause");
105
106 return 0;
107 }
udpserver.cpp

1 #include<iostream>
2 #include<winsock2.h>
3 // #include<string.h>
4 // #include<unistd.h>
5
6 #pragma comment(lib, "ws2_32")
7
8 using namespace std;
9
10 #define BUFSIZE 512
11 #define PORT 4140
12 #define MAXLISTEN 128
13
14 /*error report*/
15 static void bail(const char *on_what){
16 fputs(strerror(errno), stderr);
17 fputs(": ", stderr);
18 fputs(on_what, stderr);
19 fputc('\n', stderr);
20 exit(1);
21 }
22
23 int main()
24 {
25 int sockfd;//server fd
26 // int port;
27 int newfd;//connect fd
28 WSADATA ws;
29 struct sockaddr_in server_addr;
30 struct sockaddr_in client_addr;
31
32 char reqbuf[BUFSIZE];
33
34 // signal(SIGINT,my_handler);
35
36 //init windows socket
37 if(WSAStartup(MAKEWORD(2,2),&ws)!=0)
38 {
39 cout << "Init Windows Socket Failed::" << GetLastError() << endl;
40 exit(-1);
41 }
42
43 /*create server socket*/
44 if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)//创建套接字描述符
45 {
46 fprintf(stderr,"Socket error %s\n",strerror(errno));
47 exit(-1);
48 }
49
50 /*ready for server addr*/
51 ZeroMemory(&server_addr,sizeof(server_addr));
52 server_addr.sin_family=AF_INET;
53 server_addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
54 server_addr.sin_port=htons(PORT);
55
56 /*bind socket addr*/
57 if((bind(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr)))==INVALID_SOCKET)//将ip和port绑定到套接字上
58 {
59 fprintf(stderr,"Bind error %s\n",strerror(errno));
60 exit(-1);
61 }
62
63 /*server main while*/
64 // while(true)
65 // {
66 int size;
67 size=sizeof(struct sockaddr_in);
68 memset(&client_addr,0,sizeof(client_addr));
69
70 /*recv data from client*/
71 if((recvfrom(sockfd,reqbuf,sizeof(reqbuf),0,(struct sockaddr*)&client_addr,&size))<0)//获取数据
72 {
73 fprintf(stderr,"Recvfrom error %s\n",strerror(errno));
74 exit(-1);
75 }
76 cout<<reqbuf<<endl;
77
78 /*send data to client*/
79 char *sendbuf=(char*)"hello,this is server.";
80 if((sendto(sockfd,sendbuf,strlen(sendbuf),0,(struct sockaddr*)&client_addr,size))!=strlen(sendbuf))//发送数据
81 {
82 fprintf(stderr,"Sendto error %s\n",strerror(errno));
83 exit(-1);
84 }
85
86 // }
87
88 /*close server fd*/
89 closesocket(sockfd);//终止通信并释放套接字
90 WSACleanup();
91
92 cout<<"exit"<<endl;
93
94 return 0;
95 }
参考:
