当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 端口通信问题
帖子发表于 : 2009-05-14 13:45 

注册: 2009-03-01 15:42
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
/*客户端程序*********/
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<strings.h>
#define REMOTEPORT 4567
#define REMOTEIP "127.0.0.1"
int main(int argc,char *argv[])
{
int s,len;
struct sockaddr_in addr;
int addr_len;
char msg[256];
int i=0;
if((s=socket(AF_INET,SOCK_DGRAM,0))==-1)
{
perror("error");
exit(1);
}
else
{
printf("socket created.\n");
printf("socked id:%d \n",s);
printf("remote ip:%s \n",REMOTEIP);
printf("remote port:%d \n",REMOTEPORT);
}
len=sizeof(struct sockaddr_in);
bzero(&addr,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(REMOTEPORT);
addr.sin_addr.s_addr=inet_addr(REMOTEIP);
while(1)
{
bzero(msg,sizeof(msg));
len=read(STDIN_FILENO,msg,sizeof(msg));
sendto(s,msg,len,0,(struct sockaddr*)&addr,addr_len);
printf("\ninput message:%s \n",msg);
len=recvfrom(s,msg,sizeof(msg),0,(struct sockaddr*)&addr,(socklen_t*)&addr_len);
printf("%d :",i);
i++;
printf("Received message: %s \n",msg);
}
return 0;
}
/**************************************************************************************/
/*******************服务器端程序*****************************************************/
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<strings.h>
#define LOCALPORT 4567
int main(int argc,char * argv[])
{
int mysock,len;
struct sockaddr_in addr;
int i=0;
char msg[256];
int addr_len;
if((mysock=socket(AF_INET,SOCK_DGRAM,0))==-1)
{
perror("error");
exit(1);
}
else
{
printf("socket created.\n");
printf("socked id:%d\n",mysock);
}
addr_len=sizeof(struct sockaddr_in);
bzero(&addr,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_port=htons(LOCALPORT);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(mysock,(struct sockaddr*)&addr,sizeof(addr))==-1)
{
perror("error");
exit(1);
}
else
{
printf("bind ok!\n");
printf("local port :%d\n",LOCALPORT);
}
while(1)
{
bzero(msg,sizeof(msg));
len=recvfrom(mysock,msg,sizeof(msg),0,(struct sockaddr*)&addr,(socklen_t*)&addr_len);
printf("%d :",i);
i++;
printf("message from:%s\n",inet_ntoa(addr.sin_addr));
printf(" message length :%d\n",len);
printf(" message :%s \n\n",msg);
sendto(mysock,msg,len,0,(struct sockaddr*)&addr,addr_len);
}
return 0;
}
这段程序在ubuntu下运行时总是收不到客户端发来的信息,我拿到同学的红帽上运行很正常,不知道这是ubuntu哪地方的设置问题高手来帮忙看看


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译