打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC 编写的Socket udp通信程序
VC++编写的Socket udp通信程序
VC中的socket通讯例程(UDP协议)

UDP的服务器端:(UdpSrv.cpp)

#include "Winsock2.h"
#include "stdio.h"
#pragma comment(lib,"wsock32.lib")//导入lib
void main()
{
//初始化socket库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
   return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 )
{
   WSACleanup( );
   return;
}

SOCKET sockSrv = socket( AF_INET , SOCK_DGRAM , 0 ) ;

SOCKADDR_IN addrSrv ;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY) ;
addrSrv.sin_family = AF_INET ;
addrSrv.sin_port = htons(4000) ;

bind( sockSrv , (SOCKADDR*)&addrSrv , sizeof(SOCKADDR) ) ;

char sendBuf[100] ;
char recvBuf[100] ;
char tempBuf[200] ;

SOCKADDR_IN addrClient ;
int len = sizeof(SOCKADDR) ;

while (1)
{
   recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len) ;
   if ( ‘q‘ == recvBuf[0] )
   {
    sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR*)&addrClient,len) ;
    printf("chat end!\n") ;
    break ;
   }

   sprintf(tempBuf,"%s say : %s",inet_ntoa(addrClient.sin_addr),recvBuf) ;
   printf( "%s\n" , tempBuf ) ;
   printf( "Please input data:\n" ) ;
   gets( sendBuf ) ;
   sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len) ;
}

closesocket( sockSrv ) ;
WSACleanup() ;
}
UDP的客户端:(UdpClient.cpp)

#include "Winsock2.h"
#include "stdio.h"
#pragma comment(lib,"wsock32.lib")//导入lib

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
   return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 )
{
   WSACleanup( );
   return;
}

SOCKET sockClient = socket( AF_INET , SOCK_DGRAM , 0 ) ;

SOCKADDR_IN addrSrv ;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1") ;
addrSrv.sin_family = AF_INET ;
addrSrv.sin_port = htons(4000) ;

char sendBuf[100] ;
char recvBuf[100] ;
char tempBuf[200] ;

int len = sizeof(SOCKADDR) ;

while (1)
{
   printf("Please input data:\n");
   gets( sendBuf ) ;
   sendto( sockClient , sendBuf , strlen(sendBuf) , 0 ,
     (SOCKADDR*)&addrSrv , len ) ;

   recvfrom( sockClient , recvBuf , 100 , 0 , (SOCKADDR*)&addrSrv , &len ) ;
   if ( ‘q‘ == recvBuf[0] )
   {
    sendto(sockClient , "q" , strlen("q")+1 , 0 , (SOCKADDR*)&addrSrv , len) ;
    printf("chat end!") ;
    break ;
   }
   sprintf( tempBuf , "%s say: %s\n" , inet_ntoa(addrSrv.sin_addr) , recvBuf ) ;
   printf( tempBuf ) ;
}

closesocket(sockClient) ;
WSACleanup() ;
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
thread与socket冲突
(多线程版本)完美服务器连接客户端(实例)
《孙鑫VC视频》UDP网络编程
C++ Socket编程步骤
漫画C语言 做个聊天软件你不懂也得懂
TCP协议与UDP协议的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服