udp server

#include <Winsock2.h>
#pragma comment(lib,"WS2_32.lib")
#include <stdio.h>
#include <stdlib.h>
#define SERVER_IP "127.0.0.1" // 伺服器端IP位址
#define SERVER_PORT 5260 // 伺服器連線埠號
#define DATA_BUFFER 1024 //默認緩衝區大小
int main()
{
WSADATA wsaData;
SOCKET sClient;
int iPort = SERVER_PORT;
int iLen;//從伺服器端接收的數據長度
char buf[DATA_BUFFER];//接收數據的緩衝區
char sbuf[100];
struct sockaddr_in ser;//伺服器端地址
//判斷參數輸入是否正確:client [Server IP]
memset(buf,0,sizeof(buf));//接收緩衝區初始化
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("Failed to load Winsock.\n");
return -1;
}
//填寫要連線的伺服器地址信息
ser.sin_addr.S_un.S_addr=inet_addr(SERVER_IP);
ser.sin_family = AF_INET; // 默認
ser.sin_port = htons(iPort); // 連線埠號 htons是由主機位元組序轉換為網路位元組序
//inet_addr()將命令行中輸入的點分IP位址轉換為二進制表示的網路位元組序IP位址
sClient = socket(AF_INET,SOCK_DGRAM,0);//建立客戶數據報式套接口
int len=sizeof(sockaddr);
sendto(sClient,sbuf,strlen(sbuf)+1,0,(struct sockaddr*)&ser,sizeof(sockaddr));
iLen = recvfrom(sClient,buf,sizeof(buf)+1,0,(struct sockaddr*)&ser,&len);
if(iLen == SOCKET_ERROR)
{
printf("recvfrom() Failed: %d\n",WSAGetLastError());
}
else
printf("recvfrom() data from server: %s\n",buf);
closesocket(sClient);//關閉伺服器端套接字
WSACleanup();//中止了Windows Sockets在所有執行緒上的操作,釋放資源
return 0;
}

相關詞條

熱門詞條

聯絡我們