当前位置:  技术问答>linux和unix

请教:client怎么收不到UDP包?

    来源: 互联网  发布时间:2016-03-02

    本文导语:  //服务器端: #ifndef _WIN32_ typedef int SOCKET; #endif const int INVALID_SOCKET = -1; const int SOCKET_ERROR = -1; const int port = 6789; const char * ip = "192.168.0.33";  //我的机器在局域网中的IP int main() { SOCKET sock_comm;  struct soc...

//服务器端:
#ifndef _WIN32_
typedef int SOCKET;
#endif

const int INVALID_SOCKET = -1;
const int SOCKET_ERROR = -1;
const int port = 6789;
const char * ip = "192.168.0.33";  //我的机器在局域网中的IP
int main()
{
SOCKET sock_comm; 
struct sockaddr_in addr_remote;
const  int  addrsize = sizeof(struct sockaddr_in); 
char  buf[1473]; //80
int i;

sock_comm = socket(AF_INET, SOCK_DGRAM, 0);
memset(&addr_remote,0,addrsize);
addr_remote.sin_family = AF_INET;
addr_remote.sin_port = htons(port);
addr_remote.sin_addr.s_addr = inet_addr(ip); 

for (i=0; i 192.168.0.33.smc-https: UDP, length 22
20:06:55.333812 IP 192.168.0.19.32785 > 192.168.0.33.smc-https: UDP, length 22 
//为什么是从IP:192.168.0.19.32785发送到192.168.0.33

//以下是客户端程序,接收不到UDP包:

#ifndef _WIN32_
typedef int SOCKET;
#endif

const int INVALID_SOCKET = -1;
const int SOCKET_ERROR = -1;
const int port = 6789;

int main()
{
SOCKET sock_comm;
struct sockaddr_in addr_local;
int addrsize = sizeof(struct sockaddr_in);
char message[256];

printf("waiting for data from sender...n");

sock_comm = socket(AF_INET, SOCK_DGRAM, 0);

memset(&addr_local, 0, addrsize);
addr_local.sin_family = AF_INET;
addr_local.sin_port = htons(port);
addr_local.sin_addr.s_addr = htonl(INADDR_ANY); //inet_addr("192.168.0.33");也不行
bind(sock_comm, (struct sockaddr *)&addr_local, addrsize);
//在本机指定端口上接收数据

while (1)
{
recvfrom(sock_comm, message, sizeof(message), 0, 
(struct sockaddr *)&addr_local, &addrsize);
//addr_local得到发送方的IP地址和端口
printf("Response from sender: %sn", message);

if (strncmp(message, "stop", 4) == 0)
{
printf("sender has told me to end the connectionn");
break;
}
}
close(sock_comm);
return 0;
}

//为什么接收不到UDP包??
//将服务器程序中的IP改为"127.0.0.1",客户端就可以接收到UDP包了,为什么?
//哪位帮忙提点一下,谢谢!!

以上代码出自GNU、Linux编程指南

|

还有就是windows下的本机IP和虚拟机运行的linux下的本机IP为什么会不同呢??

虚拟机,虚拟机,就是虚拟出来的一个独立机器,除了基本的硬件,都是独立的.你就把它们当成两个独立的机器就可以了

你不会把他们认为是一个系统吧?

|
你的LINUX设置中IP表是怎么设的
没准不能正确识别127.0.0.1

    
 
 

您可能感兴趣的文章:

  • 这个问题一般查不到,只好请教大家了!
  • 请教大家,我用gcc4.2.1版本,编译openmp程序,提示找不到omp.h文件?
  • 请教:修改Linux内核时,需要调用驱动程序的函数,头文件也包含了,但是编译时候说头文件找不到!
  • 请教:服务器安装CentOS精简版系统,找不到硬盘
  • 关于linux下好多文件看不到.......怪...........(请教高手)贴者有分
  • 在安装了Win2003后再装Red Hat 9时系统提示找不到硬盘驱动器?请教各位高手.
  • 在服务器上操作可以访问,而局域网内其他机器却访问不到,请教原因
  • 请教高手装了Linux系统找不到系统盘(在线等)
  • 请教:linux串口问题(echo test > /dev/tcc-uart2)在PC终端上收不到数据
  • 请教一下,我想在IBM X306m 硬盘是SATA 硬盘,服务器上安装openSUSE 10.3,为什么老是检测不到硬盘啊。。我该怎么办呀??
  • 网络技术 iis7站长之家
  • 请教一个编译问题,网上基本上搜不到正确答案
  • ld找不到-lwrap的支持,向各位大侠请教
  • 请教关于Kill向子进程发送信号的问题,子进程如何相应信号,为什么子进程接受不到。
  • 请教:VM6.0下为夸大硬盘空间新建了虚拟硬盘但进了FC7找不到!
  • 为什么找不到类呀??是不是还是路径问题?请教高手
  • 请教tdifw-1.4.4配置方法,网上无找不到。
  • 了解libtorrent中client_test的朋友请教一下
  • 请教关于在linux系统下如何处理client发来的post请求(server端) !急啊!!!在线等!!!分不够可以再给!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3