套接字编程:客户端打印垃圾字符串
发布时间: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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |