UDP windows下socket編程執行個體

來源:互聯網
上載者:User

Server 端程式原始碼:
#include <stdio.h>
#include <Winsock2.h>
void main()
{
SOCKET socket1;
//InitWinsock();
WSADATA wsaData;
     int iErrorCode;
     if (WSAStartup(MAKEWORD(2,1),&wsaData)) //調用Windows Sockets DLL
     {
          printf("Winsock無法初始化!\n");
          WSACleanup();
          return;
     }
     printf("伺服器開始建立SOCKET。\n");
struct sockaddr_in local;
struct sockaddr_in from;
int fromlen =sizeof(from);
local.sin_family=AF_INET;
local.sin_port=htons(27015); ///監聽連接埠
local.sin_addr.s_addr=INADDR_ANY; ///本機
socket1=socket(AF_INET,SOCK_DGRAM,0);
bind(socket1,(struct sockaddr*)&local,sizeof(local));
while (1)
{
char buffer[1024]="\0";
printf("waiting for message from others-------------\n");
if (recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
{
printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer);
////給cilent發資訊
sendto(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,fromlen);
}
//Sleep(1000);
}
closesocket(socket1);
WSACleanup();   
}
Client端原始碼:
#include <stdio.h>
#include <Winsock2.h>
void main()
{
SOCKET socket1;
//InitWinsock();
WSADATA wsaData;
     int iErrorCode;
     if (WSAStartup(MAKEWORD(2,1),&wsaData)) //調用Windows Sockets DLL
     {
          printf("Winsock無法初始化!\n");
          WSACleanup();
          return;
     }
printf("伺服器開始建立SOCKET。\n");
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(27015); ///server的監聽連接埠
server.sin_addr.s_addr=inet_addr("221.223.16.32"); ///server的地址
socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{
     char buffer[1024]="\0";
     printf("input message\n");
     scanf("%s",buffer);
//     printf("%s",buffer);
     if (strcmp(buffer,"bye")==0)
     {
         printf("退出!\n");
         Sleep(100);
         closesocket(socket1);
         break;
     }
     if (sendto(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
     {
         //printf("sending..\n");
         Sleep(100);
         if (recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&server,&len) != SOCKET_ERROR)
         printf("rece from server:%s\n",buffer);
     }
     }
     closesocket(socket1);
     WSACleanup();   

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.