|
我在自己机上作了一个客户端的 程序和服务器端的程序,但是达不到预期的目的,是我的程序有问题吗,两个程序间不能进行同信,程序在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);
} |
|