首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux程序设计中Socket本地通信程序无法运行解决方案

2012-05-27 
Linux程序设计中Socket本地通信程序无法运行问题描述如题所述。client.cC/C++ code#include stdio.h#incl

Linux程序设计中Socket本地通信程序无法运行
问题描述如题所述。
client.c

C/C++ code
#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h>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 = %c\n", ch);    close(sockfd);    return 0;}


server.c
C/C++ code
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h>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 waiting\n");        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)

客户端、服务器都改一下

热点排行