我正在尝试创建一个程序,允许用户上传JAR文件,以获取已写入在线服务器的第三方代码,然后收到回复的字符串消息。C#网络问题
在线服务器使用带有标准TCP Socket网络的Java进行编码。客户端使用一个额外的软件,这意味着我必须使用C#作为File uploader。我写的代码包含在下面。在这个程序中,File uploader工作正常,但由于某种原因,客户端在达到input.ReadLine()时挂起,它应该从服务器接收String消息响应。
public static string sendFile(string filepath) {
String response = "";
// Get the file
Stream fileStream = File.OpenRead(filepath);
byte[] buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
try {
// Create the connection
TCPClient client = new TCPClient("127.0.0.1", 21000);
NetworkStream stream = client.GetStream();
// Send the file to the server
stream.Write(buffer, 0, buffer.Length);
stream.Flush();
// Receive a single string response from the server
if (stream.CanRead) {
StreamReader input = new StreamReader(stream);
inputString = input.ReadLine();
}
input.Close();
stream.Close();
client.Close();
}
catch (IOException e) {
print ("Error: " + e);
}
// Return the response message string
return inputString;
}
我也尝试过使用StreamWriter实现上面的代码,而不是直接从NetworkStream本身写入。不幸的是,StreamWriter类没有发送字节数组的方法,(只有一个字符数组)。我想知道问题是否是由于我直接调用NetworkStream的Write方法而不是使用StreamWriter导致的。
如果任何人有任何想法为什么上面的代码不工作,请让我知道。或者,如果你有一个不同的解决方案,允许我发送一个文件(字节数组),并使用同一个TCPClient连接接收一个字符串消息,那么请随时提及它。
Regards,
Midavi。
StreamReader.ReadLine需要换行符,回车符或组合。服务器发送了吗? – 2012-01-18 14:48:52