upd套接字服务器与客户端交互C++代码示范

upd套接字服务器与客户端交互C++代码示范

 1 // vc2_2_4UDPserver_Txwtech.cpp : 定义控制台应用程序的入口点。
 2 //服务器端
 3 #include "StdAfx.h"
 4 #include <WinSock2.h>
 5 #include<stdio.h>
 6 #include<Windows.h>
 7 #pragma comment(lib,"WS2_32.lib")
 8 int main()
 9 {
10     WSADATA data;
11     WORD w=MAKEWORD(2,0);
12     char sztext[1024]="欢迎您\r\n";
13     ::WSAStartup(w,&data);
14     SOCKET s;
15     s=::socket(AF_INET, SOCK_DGRAM,0);
16     sockaddr_in addr,addr2;
17     int n=sizeof(addr2);
18     char buff[1024]={0};
19     addr.sin_family=AF_INET;
20     addr.sin_port=htons(75);
21     addr.sin_addr.S_un.S_addr=INADDR_ANY;
22     ::bind(s,(sockaddr*)&addr,sizeof(addr));
23     printf("UDP服务器已经启动txwtech,输入qq可退出\r\n");
24     while(1)
25     {
26         char cc[1024]={0};   //此处如果索引值设置小了,就会出问题。不如:char cc[1];是由于建立的数组下标溢出造成的
27             //c=getchar();
28     //    c='';
29         //cc[1024]={0};
30         printf("我说:");
31         scanf("%s",cc);
32         //sztext=c;
33     //    strcpy(sztext,c);
34         if (strcmp(cc,"qq")==0)
35 
36             {
37                 printf("即将退出%s",cc);
38                 ::Sleep(1000);
39                 ::closesocket(s);
40                 ::WSACleanup();
41                 strcpy(cc,"");
42                 return 0;
43             }
44         strcat(sztext,cc);
45         if(::recvfrom(s,buff,10,0,(sockaddr*)&addr2,&n)!=0)
46         {
47             //printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr));
48             printf("客户说:%s\r\n",buff);
49             //strcat(sztext,buff);
50             
51             
52         //    ::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr2,n);
53             ::sendto(s,cc,sizeof(cc),0,(sockaddr*)&addr2,n);
54         //    break;
55             
56         }
57         
58     }
59     ::closesocket(s);
60     ::WSACleanup();
61     
62     if(getchar())
63     {
64         return 0;
65         //::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr2,n);
66     }
67     else
68     {
69         ::Sleep(100);
70     }
71 }
 1 // vc2_2_4upd_Client.cpp : 定义控制台应用程序的入口点。
 2 //txwtech,客户端
 3 
 4 #include "stdafx.h"
 5 #include <winsock2.h>
 6 #include <stdio.h>
 7 #include <Windows.h>
 8 #pragma comment(lib,"WS2_32.lib")
 9 int main()
10 {
11     WSADATA data;
12     WORD w=MAKEWORD(2,0);
13     ::WSAStartup(w,&data);
14     SOCKET s;
15     s=::socket(AF_INET,SOCK_DGRAM,0);
16     sockaddr_in addr,addr2;
17     int n=sizeof(addr2);
18     char buff[1024]={0};
19     addr.sin_family=AF_INET;
20     addr.sin_port=htons(75);
21     addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
22     printf("UDP客户端已经启动txwtech,输入qq可退出\r\n");
23     char sztext[1024]="您好\r\n";
24     while(1)
25     {
26         char cc1[1024];
27             //c=getchar();
28     //    c='';
29         printf("我说:");
30         scanf("%s",cc1);
31         //sztext=c;
32     //    strcpy(sztext,c);
33         if (strcmp(cc1,"qq")==0)
34 
35             {
36                 printf("即将退出%s",cc1);
37                 ::Sleep(1000);
38                 ::closesocket(s);
39                 ::WSACleanup();
40                 return 0;
41             }
42     //    sztext=cc;
43         strcpy(sztext,cc1);
44     //if(::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr,n)!=0)
45         if(::sendto(s,cc1,sizeof(sztext),0,(sockaddr*)&addr,n)!=0)
46     {
47         ::recvfrom(s,buff,10,0,(sockaddr*)&addr2,&n);
48         printf("服务器说:%s\r\n",buff);
49         /*::closesocket(s);
50         ::WSACleanup();*/
51     }
52     }
53     if(getchar())
54         //return 0;
55         ::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr,n);
56     else
57         ::Sleep(100);
58 }

 

posted @ 2019-06-19 16:37  txwtech  阅读(437)  评论(1编辑  收藏  举报