我打算在C#.NET中編寫Java TCP服務器和客戶端。 我將Java用於服務器,因爲我有能力在Linux上運行服務器。 我的問題是,.NET客戶端可以連接到服務器,但如果我發送一些東西給服務器,服務器不會收到任何東西。Java Tcp服務器和.Net Tcp客戶端發送和接收問題
這裏是我的客戶:
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);
}
}
這裏是我的服務器:
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);
}
}
我測試的代碼僅用於測試PROTOTYP連接到Java服務器。我也打算與iOS和可能Windows Phone的Java Tcp服務器進行通信。 所以我希望你們中的任何一個人都能爲我解答。
感謝您的回答,它幫助了我很多。好的,將來我不會只發送一行。我打算髮送可能的json對象或xml的東西到服務器。 – Alex