VC环境下UDP Socket编程 depend vc2010
来源:互联网 发布:软件测试性能指标 编辑:程序博客网 时间:2024/05/23 11:50
//本帖抄自网上,经过调试成功,自己留着备用。与大家互相学习。
//在vc2010上能编译通过。能互相通信。
//server 和 client 都要"项目属性"--->"配置属性"----> "链接"----> "输入" --->"附加依赖项"中添加"ws2_32.lib"
//UDP client
//client send string to server#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib") //必须加载一个库
#define BUFLEN 1024
void ClientUdp(void)
{
SOCKET client; //SOCKET 是大写的
SOCKADDR_IN addr; //跟linux的不同是,全部变量都得在前面这里先定义了,后面再使用,否则出错。char buf[BUFLEN];
WSADATA wsa;
int error;
eror=WSAStartup(MAKEWORD(1,1),&wsa); //initial Ws2_32.dll by a process //加载库,UDP的首要步骤
//---------------------------------------------------------------------------------------------------------------------------
{
printf("WSAStartup error=%d\n",error);
}
if(LOBYTE(wsa.wVersion)!=1 || HIBYTE(wsa.wVersion)!=1)
{
printf("版本出错\n");
printf("wVersion=%dwsa.wVersion=%d",wsa.wVersion,wsa.wVersion);
}
//---------------------------------------------------------------------------------------------------------------------------
if((client = socket(AF_INET,SOCK_DGRAM,0)) <= 0) //返回一个套接字
{printf("Create socket fail!\n");
return -1;
}
//---------------------------------------------------------------------------------------------------------------------------
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("192.168.56.1");//inet_addr("127.0.0.1"); //这里填写要发送到服务端的ip.一般没问题,127是本地回环,没试试成功。addr.sin_port = htons(5555);
bind(client,(struct sockaddr *)&addr,sizeof(addr));
while(1)
{
printf("pls input:");
scanf("%s", buf);
sendto(client, buf,strlen(buf)+1, 0, (SOCKADDR *)&addr, sizeof(addr));
memset(buf,0,sizeof(buf));
}
closesocket(client);
WSACleanup(); //clean up Ws2_32.dll
}
int main(void)
{
ClientUdp();
return 0;
}
//------------------------------------------------------------------------------------------------------------------------
//UDP server
//listen port 9102
//receive string and display it
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define BUFLEN 1024
void ServerUdp(void)
{
SOCKET server;
SOCKADDR_IN addr;
char buf[BUFLEN];
int len;
WSADATA wsa;//全部在这里定义了,后面才使用。在下面定义的话会出错。
int error;
error=WSAStartup(MAKEWORD(1,1),&wsa); //initial Ws2_32.dll by a process
//----------------------------------------------------------------------------------------------------------------------------
if(error!=0)//非必须
{
printf("WSAStartup error=%d\n",error);
}
if(LOBYTE(wsa.wVersion)!=1 || HIBYTE(wsa.wVersion)!=1)
{
printf("版本出错\n");
printf("wVersion=%dwsa.wVersion=%d",wsa.wVersion,wsa.wVersion);
}
//----------------------------------------------------------------------------------------------------------------------------
if((server = socket(AF_INET,SOCK_DGRAM,0)) <= 0) //创建SOCK
{
printf("Create socket fail!\n");
return -1;
}
//---------------------------------------------------------------------------------------------------------------------------
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(5555);
addr.sin_addr.s_addr = inet_addr("192.168.56.1"); //htonl(INADDR_ANY); //不能通信一定是这里出问题。如果没绑定成功它会自动退出
htonl(INADDR_ANY); //因此这边先要能绑定具体ip.客户端就直接填写这个发送的ip地址
if(bind(server,(SOCKADDR *)&addr,sizeof(SOCKADDR))!=0)
{
printf("Bind fail!\n");
return -1;
}
len = sizeof(addr); //不能像客户端一样直接“sizeof(addr)”,这里是&指针
printf("start listen...\n");
while(1)
{
recvfrom(server, buf, BUFLEN, 0,(struct sockaddr*)&addr, &len);
printf("recvfrom client:%s\n",buf);
memset(buf,0,sizeof(buf));
}
closesocket(server);
WSACleanup(); //关闭
}
int main(void)
{
ServerUdp();
return 0;
}
- VC环境下UDP Socket编程 depend vc2010
- VC环境下UDP Socket编程示例
- VC环境下window网络程序:UDP Socket程序
- socket编程之UDP(windows环境下C++实现)
- window下 UDP socket编程
- linux下socket编程(udp)
- vc下socket编程步骤
- vc下socket编程步骤
- python3环境下的TCP协议与UDP协议的socket编程
- Linux下Socket编程之UDP原理
- Linux下Socket编程之UDP应用
- C#下socket编程:udp协议测试
- UDP windows下socket编程实例
- Linux下Socket编程之UDP应用
- UDP windows下socket编程实例
- Windows系统下C++ Socket UDP编程
- linux下UDP的socket编程
- 网络编程--UDP下的Socket
- 来自雅虎的网站优化加速最佳实践
- ubuntu 挂载 nfs 成功后无法umount 提示 device is busy 解决方案
- jquery json
- 在驱动中获得Windows的版本号
- Json in Java 的使用
- VC环境下UDP Socket编程 depend vc2010
- mount.nfs: access denied by server while mounting 一个解决办法
- iOS图形处理类和NSAttributedString
- qemu-guest-agent windows下的监控开发
- Ubuntu下配置NFS服务
- 勉强没有幸福
- C#-Mdi多文档窗口及其子窗口的排列 ---ShinePans
- Linux中搭建SVN服务器
- 9名遭千人围殴城管系临时搬运工