LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 636|回复: 1

关于UDP的问题

[复制链接]
发表于 2005-4-12 21:39:14 | 显示全部楼层 |阅读模式
我在自己机上作了一个客户端的 程序和服务器端的程序,但是达不到预期的目的,是我的程序有问题吗,两个程序间不能进行同信,程序在recvfrom函数那里也没有阻塞,到底是怎么了?哪位大侠能帮帮在下?
代码如下:
server 端:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>

#define PORT 5008
#define MAXDATASIZE 10
void main(void)
{
        struct sockaddr_in        serveraddr;
        struct sockaddr_in        clientaddr;
        int                        listenfd;
        char                        sendline[1024];
        char                        recvline[1024];
        socklen_t                len;
        int                         n;
        bzero(&serveraddr,sizeof(serveraddr));
        bzero(&clientaddr,sizeof(clientaddr));
        if(listenfd=socket(AF_INET,SOCK_DGRAM,0)<0)
        printf("socket error!");
        serveraddr.sin_family=AF_INET;
        serveraddr.sin_port=htons(6000);
        serveraddr.sin_addr.s_addr=inet_addr("192.168.1.44");
        if(bind(listenfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr))==-1)
        printf("bind error!");
        len=sizeof(clientaddr);
        while(1)
        {
                n=recvfrom(listenfd,recvline,1024,0,(struct sockaddr *)&clientaddr,&len);
                printf("%s",recvline);
                sendto(listenfd,recvline,n,1024,(struct sockaddr *)&clientaddr,len);
        }       
}

客户端:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>

#define PORT 5008
#define MAXDATASIZE 10
void main(void)
{
        struct sockaddr_in        serveraddr;
        int                        connfd;
        char                        sendline[1024];
        char                        recvline[1024];
        int                        n;
        bzero(&serveraddr,sizeof(serveraddr));
       
        serveraddr.sin_family=AF_INET;
        serveraddr.sin_port=htons(6000);
        serveraddr.sin_addr.s_addr=inet_addr("192.168.1.44");
        if(connfd=socket(AF_INET,SOCK_DGRAM,0)<0)
        printf("socket error!");
        while(1)
        {
                scanf("%s",&sendline);
                sendto(connfd,sendline,1024,0,(struct sockaddr *)&serveraddr,sizeof(serveraddr));
                n=recvfrom(connfd,recvline,1024,0,NULL,NULL);
                printf("%s\n",recvline);
        }
        exit(0);
       
}
 楼主| 发表于 2005-4-12 21:46:50 | 显示全部楼层
问题解决了 ,原来是我在调用socket()函数并判断是否小于0时不小心弄错了,少加了括号呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表