
vc++winsock网络编程问题
winsock网络编程问题#include<Winsock2.h>#include<stdio.h>voidmain(){WORDwVersionRequested;WS...
winsock网络编程问题
#include <Winsock2.h>
#include <stdio.h>
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 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(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
printf("%s\n",recvBuf);
closesocket(sockSrv);
WSACleanup();
}
编译 连接都正常 就是执行的时候不对。。。
这是服务器端 我创建的win32控制台应用程序 为什么我运行的时候还没有运行客户端 就执行了printf语句 输出了一堆乱码 大家帮帮忙 我是菜鸟
可以打开vc++试一下 输出的全是烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫 我就很不明白 recvfrom函数是不是应该等客户端链接的时候才执行 我光开一个服务器端 没有开客户端 为什么就执行下面那条printf语句了? 展开
#include <Winsock2.h>
#include <stdio.h>
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 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(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
printf("%s\n",recvBuf);
closesocket(sockSrv);
WSACleanup();
}
编译 连接都正常 就是执行的时候不对。。。
这是服务器端 我创建的win32控制台应用程序 为什么我运行的时候还没有运行客户端 就执行了printf语句 输出了一堆乱码 大家帮帮忙 我是菜鸟
可以打开vc++试一下 输出的全是烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫 我就很不明白 recvfrom函数是不是应该等客户端链接的时候才执行 我光开一个服务器端 没有开客户端 为什么就执行下面那条printf语句了? 展开
展开全部
recvfrom()的用法要清楚.
recvfrom()不同于recv(...),两者用法有区别.recv(...)需要在服务器端进行侦听,然后接收特定的客户端的连接,最后用recv来接收客户端的数据.如果没有客户端的连接和客户端发送的数据,recv是接受不到任何数据的.
而recvfrom()则大不相同,它只要你建立起一个服务端,也不用和客户端建立任何连接关系,就可以直接接受数据了.他不管是哪个客户端发送的数据报都通吃.因为recvfrom自己都不知道接收的是什么,根本不是char*类型的,而你又要把它显示成char*类型的,所以你的程序就显示一堆乱码.
recvfrom一般用在UDP协议下的通讯,也就是需要你在接受数据之前临时决定准备接受谁的数据.
recv则多用于TCP/IP通讯,通讯的时候客户端和服务端已经预先握手了.
recvfrom是一个很好用的黑客用来侦探局域网数据报的函数.
recvfrom()不同于recv(...),两者用法有区别.recv(...)需要在服务器端进行侦听,然后接收特定的客户端的连接,最后用recv来接收客户端的数据.如果没有客户端的连接和客户端发送的数据,recv是接受不到任何数据的.
而recvfrom()则大不相同,它只要你建立起一个服务端,也不用和客户端建立任何连接关系,就可以直接接受数据了.他不管是哪个客户端发送的数据报都通吃.因为recvfrom自己都不知道接收的是什么,根本不是char*类型的,而你又要把它显示成char*类型的,所以你的程序就显示一堆乱码.
recvfrom一般用在UDP协议下的通讯,也就是需要你在接受数据之前临时决定准备接受谁的数据.
recv则多用于TCP/IP通讯,通讯的时候客户端和服务端已经预先握手了.
recvfrom是一个很好用的黑客用来侦探局域网数据报的函数.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |