我正在尝试编写一个多客户端套接字系统,它通过客户端发送的字符串进行通信,这将根据其内容触发事件。
如何做有很多材料,但我无法掌握其背后的逻辑
在这一段In this example和enter link description here中,有一段真正的代码,它有两条主要指令:
socket.accept();
Thread t = new Thread(runnable);
我无法理解这是如何运作的:
也许这是我缺乏谷歌技能,但我找不到一个很好的教程来做这些事情:帮助?
答案 0 :(得分:1)
while(true)不断传递这些指令,但只有在accept()方法点击时才创建一个Thread?
在方法accept()上执行停止,直到有人尝试连接。您可以在我们的IDE上使用调试模式看到这一点。
新线程是否有专用端口?套接字通信不是一对一的吗?
不,你在同一个端口上有很多连接
软件如何跟踪生成的套接字线程,它实际上是否重要?
现在要为此烦恼
如何向刚刚写信给我的帖子发送回复?
当有人尝试连接时,您会收到一个回复此用户的对象,请查看文档
答案 1 :(得分:1)
•while(true)连续传递这些指令,但只有在accept()方法点击时才创建一个Thread?
创建一个新的Thread来监听通过Socket传入的数据(参见Socket.getInputStream())
•新线程是否有专用端口?套接字通信是一对一的吗?
线程没有端口。但是Socket有一个专门的地址来与这个客户端进行通信
•软件如何跟踪生成的套接字线程,它实际上是否重要?
这取决于软件。但大多数情况下,如果客户端登录,您可能会在某种Collection
- A List
中保留连接套接字的记录,或者在userID和Socket之间保留Map
•如何向刚刚写信给我的帖子发送回复?
从简单的意义上讲,它就像
一样简单ServerSocket ss = ...;
Socket s = ss.accept();
PrintStream ps = new PrintStream(s.getOutputStream());
ps.println("Hello World");
您需要确保您的PrintStream无法收集垃圾,因为这将关闭Stream / Socket