C# Java Tcp服务器和.Net Tcp客户端的发送和接收问题
我计划在C#.NET中编写一个Java TCP服务器和一个客户端。 我选择Java作为服务器,因为我能够在Linux上运行服务器。 我的问题是.NET客户端可以连接到服务器,但是如果我向服务器发送了一些东西,服务器就不会收到任何东西 这是我的客户:C# Java Tcp服务器和.Net Tcp客户端的发送和接收问题,c#,java,.net,C#,Java,.net,我计划在C#.NET中编写一个Java TCP服务器和一个客户端。 我选择Java作为服务器,因为我能够在Linux上运行服务器。 我的问题是.NET客户端可以连接到服务器,但是如果我向服务器发送了一些东西,服务器就不会收到任何东西 这是我的客户: static void Main(string[] args) { try { System.Net.Sockets.TcpClient tcpclnt = new System
static void Main(string[] args)
{
try
{
System.Net.Sockets.TcpClient tcpclnt = new System.Net.Sockets.TcpClient();
Console.WriteLine("Connecting.....");
tcpclnt.Connect("192.168.178.26", 1337);
Console.WriteLine("Connected");
Console.Write("Enter the string to be transmitted : ");
String str = Console.ReadLine();
Stream stm = tcpclnt.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(str);
Console.WriteLine("Transmitting.....");
stm.Write(ba, 0, ba.Length);
stm.Flush();
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(bb[i]));
tcpclnt.Close();
}
catch (Exception e)
{
Console.WriteLine("Error..... " + e.StackTrace);
}
}
我测试的代码只是测试与Java服务器连接的原型。
我还计划使用iOS和Windows Phone与Java Tcp服务器通信。
所以我希望你们中的任何人都能给我一个答案。您的客户端发送一行字节,并等待响应,保持流打开 在
ReadLine
返回之前,服务器等待换行(或流的结束,即连接关闭)。所以双方都在等待对方
我建议您在客户端使用围绕流的
OutputStreamWriter
,然后您可以非常简单地使用WriteLine
(而不是自己乱搞编码)。当服务器看到线路中断时,它将作出响应。我也会在客户端上使用InputStreamReader
,而不是在每个字节上调用Convert.ToChar
。基本上,如果您只对传输文本感兴趣,并且乐于使用“一行”作为消息传递的单位,那么在两侧使用一对写/读卡器是最简单的方法。谢谢您的回答,这对我帮助很大。好的,以后我不会只发一条线。我计划向服务器发送json对象或xml内容。
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket socket = new ServerSocket(1337);
while(true)
{
System.out.println("... Server gestartet");
Socket connectionSocket = socket.accept();
BufferedReader inputFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
System.out.println(connectionSocket.getRemoteSocketAddress());
DataOutputStream outputStream = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inputFromClient.readLine();
System.out.println("Received: " + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + "\n";
outputStream.writeBytes(capitalizedSentence);
}
}