gpt4 book ai didi

c - 套接字编程 : Client printing garbage string

转载 作者:太空狗 更新时间:2023-10-29 16:00:37 28 4
gpt4 key购买 nike

我是网络编程的新手,我们实验室应该做的第一个程序是一个程序,其中两个系统,客户端和服务器相互发送消息。我的程序没有编译器错误,但是每当通过网络发送消息时,另一端都无法正确显示。相反,显示了一个不可读的框(我认为正在打印垃圾字符串,但不知道为什么)。

View the screenshot here

代码:

客户端.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: %s\n",data );

//close the socket

close(nw_socket);

return 0;
}

服务器.c

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

//create a new socket
int server_socket=socket(AF_INET,SOCK_STREAM,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,server_message,sizeof(server_message),0);
if(send_val==-1)
perror("\nError while sending: ");

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

return 0;
}

我该如何解决这个问题?提前致谢。

最佳答案

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

int send_val=   send(server_socket,server_message,sizeof(server_message),0);

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

int send_val = send(client_socket,server_message,sizeof(server_message),0);

关于c - 套接字编程 : Client printing garbage string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320266/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com