我的两个程序有问题--C#客户端可以使用套接字成功将数据写入C++客户端,但从服务器读取数据是不成功。C#客户端与C++服务器通信 - 服务器可以从套接字读取,但写入不成功
这里是我的C++代码:
int sock = socket(PF_INET, SOCK_STREAM, 0);
sockaddr_in sockad;
// sin_family, port etc defined here
bind(sock, (sockaddr*)&sockad, sizeof(sockad));
listen(sock, 15);
char buf;
stringstream ss;
while(running) {
socklen_t sockl = sizeof(sockad);
int sockd = accept(sock, (sockaddr*)&sockad, &sockl);
while(recv(sockd, &buf, 1, 0) > 0) {
ss << buf;
}
// THIS is printed
cout << ss.str() << endl;
string response = "asdgfh";
// THIS never reaches the C# client
write(sockd, response.c_str(), strlen(response.c_str()));
close(sockd);
}
close(sock);
这是我的C#代码:
string message = "message";
Int32 port = 4345;
TcpClient client = new TcpClient("server.address.com", port);
NetworkStream stream = client.getStream();
Byte[] data = new Byte[256];
data = Encoding.ASCII.GetBytes(message);
// THIS SUCCEEDS
stream.Write(data, 0, data.Length);
// THIS FAILS, it also freezes the other program
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = Encoding.ASCII.GetString(data, 0, bytes);
stream.Close();
client.Close();
那么,什么是错我的代码,或者这是一个服务器的配置问题,或者类似的东西?
我相信,而不是“写”你可能想使用“发送”在C++层。 – MattTanner
@UrticaDioica这里是一个[文章]概述发送函数(https://msdn.microsoft.com/en-us/library/windows/desktop/ms740149(v=vs.85).aspx) – MattTanner
将函数更改为发送没有解决问题... – mkkekkonen