加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

套接字编程:客户端打印垃圾字符串

发布时间:2020-12-16 10:08:43 所属栏目:百科 来源:网络整理
导读:我是网络编程的新手,我们在实验室中应该做的第一个程序是一个程序,其中两个系统,客户端和服务器相互发送消息.我的程序没有编译器错误,但无论何时通过网络发送消息,它都无法在另一端正确显示.而是显示一个不可读的框(我认为正在打印垃圾字符串,但不知道为什么
我是网络编程的新手,我们在实验室中应该做的第一个程序是一个程序,其中两个系统,客户端和服务器相互发送消息.我的程序没有编译器错误,但无论何时通过网络发送消息,它都无法在另一端正确显示.而是显示一个不可读的框(我认为正在打印垃圾字符串,但不知道为什么).

View the screenshot here

代码:

client.c

int main()
{
    char server_message[256]="You have reached the server!!n";
    //create a socket
    int nw_socket;
    nw_socket=socket(AF_INET,SOCK_STREAM,0);

    //specify address for socket

    struct sockaddr_in server_address;
    server_address.sin_family = AF_INET;
    server_address.sin_port = htons(9999);
    server_address.sin_addr.s_addr = INADDR_ANY;

    //establish a connection
    int connection_status = connect(nw_socket,(struct sockaddr *) & server_address,sizeof(server_address));

    //check for errors

    if(connection_status==-1)
    {
        perror("There was a problem initiating the connection.n");
    }
    else
    {
        printf("The connection was successful.n");
    }

    int send_val = send(nw_socket,server_message,sizeof(server_message),0);
    if(send_val==-1)
        perror("nError while sending: ");
    //receive data

    char data[256];
    int recv_val=recv(nw_socket,data,sizeof(data),0);
    if(recv_val==-1)
        perror("nError while receiving: ");

    printf("The server's response was: %sn",data );

    //close the socket

    close(nw_socket);

    return 0;
}

server.c

int main()
{
    char server_message[256]="You have reached the server!!n";

    //create a new socket
    int server_socket=socket(AF_INET,0);

    struct sockaddr_in server_connection;
    server_connection.sin_family=AF_INET;
    server_connection.sin_port=htons(9999);
    server_connection.sin_addr.s_addr=INADDR_ANY;

    int bind_val=bind(server_socket,(struct sockaddr *) & server_connection,sizeof(server_connection));
    if(bind_val==-1)
        perror("nError while binding: ");
    listen(server_socket,6);

    int client_socket=accept(server_socket,NULL,NULL);
    if(client_socket==-1)
        perror("nError while accepting: ");

    int send_val=   send(server_socket,0);
    if(send_val==-1)
        perror("nError while sending: ");

    char data[256];
    recv(server_socket,0);
    close(server_socket);

    return 0;
}

我该如何解决?提前致谢.

解决方法

您在服务器中发送消息时正在使用侦听套接字:

int send_val=   send(server_socket,0);

您应该使用连接到客户端的套接字:

int send_val = send(client_socket,0);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读