- 论坛徽章:
- 0
|
通信问题,客户端与服务器端的socket通信问题,程序可以编译通过但是不能实现通信,希望各位大虾指导:
服务器端程序:
#define PORT 8000
#define MAX_SIZE 10
main()
{
int sockfd , len ;
struct sockaddr_in addr ;
int addr_len = sizeof(struct sockaddr_in) ;
char buffer[MAX_SIZE] ;
if((sockfd = socket(AF_INET , SOCK_DGRAM, 0))<0)
{
perror("socket") ;
exit(1) ;
}
bzero(&addr , sizeof(addr)) ;
addr.sin_family = AF_INET ;
addr.sin_port = htons(PORT) ;
addr.sin_addr.s_addr = htonl(INADDR_ANY) ;
if(bind(sockfd , (struct sockaddr*)&addr , sizeof(addr))< 0)
{
perror("connect") ;
exit(1) ;
}
while(1)
{
bzero(buffer , sizeof(buffer)) ;
printf(".\n") ;
len = recvfrom(sockfd , buffer , sizeof(buffer) , 0 , (struct sockaddr*)&addr , (socklen_t *)&addr_len) ;
printf("..\n") ;
printf("receive from %s\n" , inet_ntoa(addr.sin_addr)) ;
sendto(sockfd , buffer , len , 0 , (struct sockaddr*)&addr , addr_len) ;
}
}
客户端程序:
#define PORT 8000
#define SERVER_IP "127.0.0.1"
#define MAX_SIZE 10
main()
{
int s , len;
int t ;
struct sockaddr_in addr;
int addr_len = sizeof(struct sockaddr_in) ;
char buffer[MAX_SIZE] ;
if((s = socket(AF_INET , SOCK_DGRAM , 0)) < 0)
{
perror("socket");
exit(1);
}
bzero(&addr , sizeof(addr)) ;
addr.sin_family = AF_INET ;
addr.sin_port = htons(PORT) ;
addr.sin_addr.s_addr = inet_addr(SERVER_IP) ;
while(1)
{
bzero(&addr , sizeof(addr)) ;
len = read(STDIN_FILENO , buffer , sizeof(buffer)) ;
printf(".\n") ;
sendto(s , buffer , len , 0 , (struct sockaddr*)&addr , addr_len) ;
printf("..\n") ;
len = recvfrom(s , buffer , sizeof(buffer) , 0 , (struct sockaddr*)&addr ,
(socklen_t *)&addr_len ) ;
printf("...\n") ;
printf("receive %s" , buffer) ;
}
} |
|