cuốn sách gpt4 ai đã làm

c - dữ liệu không được gửi/nhận chính xác

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 07:37:29 30 4
mua khóa gpt4 Nike

Tôi đang cố gắng triển khai máy chủ/máy khách TCP bằng cách sử dụng các ổ cắm trong c. Tôi đã viết chương trình theo cách mà mọi thứ chúng tôi gửi trên máy khách đều được hiển thị từng dòng trong máy chủ cho đến khi gõ lệnh thoát. Chương trình chạy nhưng cuối cùng dữ liệu lại hiển thị trên máy chủ. Ai đó có thể kiểm tra mã?

máy chủ TCP

#include
#include
#include
#include
#include

chủ yếu()
{
char buf[100];
socklen_t len;
int k,sock_desc,temp_sock_desc;
struct sockaddr_in máy khách, máy chủ;

memset(&client,0,sizeof(client));
memset(&server,0,sizeof(server));
sock_desc = socket(AF_INET,SOCK_STREAM,0);
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = 7777;

k = bind(sock_desc,(struct sockaddr*)&server,sizeof(server));
k = nghe(sock_desc,20);
len = sizeof(client);
temp_sock_desc = chấp nhận(sock_desc,(struct sockaddr*)&client,&len);

while(1)
{
k = recv(temp_sock_desc,buf,100,0);
if(strcmp(buf,"exit")==0)
phá vỡ;

nếu(k>0)
printf("%s",buf);
}

đóng(sock_desc);
đóng(temp_sock_desc);
return 0;
}

máy khách TCP

#include
#include
#include
#include
#include

chủ yếu()
{
char buf[100];
cấu trúc máy khách sockaddr_in;
int sock_desc,k;

sock_desc = socket(AF_INET,SOCK_STREAM,0);
memset(&client,0,sizeof(client));
client.sin_family = AF_INET;
client.sin_addr.s_addr = inet_addr("127.0.0.1");
client.sin_port = 7777;

k = connect(sock_desc,(struct sockaddr*)&client,sizeof(client));

while(1)
{
được(buf);
k = gửi(sock_desc,buf,100,0);

if(strcmp(buf,"exit")==0)
phá vỡ;
}

đóng(sock_desc);
return 0;
}

câu trả lời hay nhất

trong khi(1){
k = recv(temp_sock_desc,buf,100,0);
if(memcmp(buf,"exit", 4)==0)
phá vỡ;
nếu(k>0)
printf("%*.*s", k, k, buf);
}

Kết quả của recv() không phải là một chuỗi và do đó sẽ không bị chấm dứt. Cách "sửa" ở trên không hoàn toàn chính xác, nó chỉ nhằm chỉ cho bạn đi đúng hướng.

Về c - dữ liệu không được gửi/nhận chính xác, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/7633520/

30 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress