当前位置: 技术问答>linux和unix
Linux程序设计中Socket本地通信程序无法运行
来源: 互联网 发布时间:2017-02-24
本文导语: 问题描述如题所述。 client.c #include #include #include #include #include int main() { int sockfd; int len; struct sockaddr_in address; int result; char ch = 'A'; //Create a socket for the client sock...
问题描述如题所述。
client.c
server.c
运行程序:$ ./ser & ./cli
输入命令后显示:
[1] 26538
server waiting
然后到这里程序就不动了。具体是到accept函数就停止了。
也上网查了一些资料但还是不知道怎么回事,还请大家多多指教。
client.c
#include
#include
#include
#include
#include
int main()
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
char ch = 'A';
//Create a socket for the client
sockfd = socket(AF_INET,SOCK_STREAM,0);
//Name the socket,as agreed with the server
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = 9734;
len = sizeof(address);
result = connect(sockfd,(struct sockaddr *)&address,len);
if(result == -1)
{
perror("oops:client");
exit(1);
}
write(sockfd, &ch, 1);
read(sockfd, &ch, 1);
printf("char from server = %cn", ch);
close(sockfd);
return 0;
}
server.c
#include
#include
#include
#include
#include
#include
#include
int main()
{
int server_sockfd,client_sockfd;
socklen_t server_len,client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
server_address.sin_port = 9734;
server_len = sizeof(server_address);
bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
listen(server_sockfd,5);
while(1)
{
char ch;
printf("server waitingn");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);
read(client_sockfd,&ch,1);
ch++;
write(client_sockfd,&ch,1);
close(client_sockfd);
}
return 0;
}
运行程序:$ ./ser & ./cli
输入命令后显示:
[1] 26538
server waiting
然后到这里程序就不动了。具体是到accept函数就停止了。
也上网查了一些资料但还是不知道怎么回事,还请大家多多指教。
|
试试address.sin_port = htons(9734)
客户端、服务器都改一下
客户端、服务器都改一下