Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73743
  • 博文数量: 35
  • 博客积分: 1420
  • 博客等级: 上尉
  • 技术积分: 306
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-15 13:33
个人简介

自强不息!

文章分类

全部博文(35)

文章存档

2020年(1)

2017年(1)

2011年(3)

2010年(15)

2009年(2)

2008年(2)

2007年(1)

2006年(10)

我的朋友

分类: C/C++

2006-08-24 16:11:41

UDP windows下socket编程实例
因为要测试一个GPRS的UDP上传功能,于是在Windows下写了这个UDP测试小程序.
Server 端程序源代码:
#include
#include

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);
}



Client端源代码:



#include
#include

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);
}


至于功能,看看源代码就知道了,以上的源代码编译调试工作正常!


阅读(5010) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~