这是服务器上的代码(C#):
private void Form1_Load(object sender, EventArgs e)
{
Thread service = new Thread((ThreadStart)delegate
{
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
TcpListener listener = new TcpListener(localAddr, 13235);
listener.Start();
Console.Write("Waiting for a connection... ");
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Connected!");
NetworkStream str = client.GetStream();
byte[] bytes5 = new byte[client.ReceiveBufferSize];
str.Read(bytes5, 0, (int)client.ReceiveBufferSize);
string returndata = Encoding.UTF8.GetString(bytes5);
Console.WriteLine("ewwww hone :" + returndata);
label1.Text = returndata;
client.Close();
});
service.Start();
}
}
Java上的客户端:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DataOutputStream os = null;
DataInputStream is = null;
int port = 13235;
System.out.println("SocketClient initialized \n");
try {
InetAddress address = InetAddress.getByName("127.0.0.1");
Socket connection = new Socket(address, port);
os = new DataOutputStream(connection.getOutputStream());
is = new DataInputStream(connection.getInputStream());
os.writeBytes(jTextField1.getText());
System.out.println(jTextField1.getText());
}
catch (IOException f) {
System.out.println("IOException: " + f);
}
catch (Exception g) {
System.out.println("Exception: " + g);
}
}
我的程序只在我第一次点击按钮时工作正常,但之后我什么都没得到!知道如何解决它,或者出了什么问题?我需要的就是点击那个按钮(在客户端),我需要在服务器端获取它...
答案 0 :(得分:2)
在MSDN上查看TcpListener
的示例代码:http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx
您错过了代码中的while
循环。第一次连接后,它会调用.close()
然后退出您的线程。它应该循环回来开始监听下一个连接。
答案 1 :(得分:1)
您似乎没有关闭连接/流,在第二次单击时,您再次打开套接字连接。您可以在每次单击时关闭套接字连接。或者您保持套接字打开,并且不会在每次发生单击时重新初始化它。
答案 2 :(得分:0)
您需要将读取和写入流代码放在while loop
内多次读/写。