将函数暴露给其他进程
Posted
技术标签:
【中文标题】将函数暴露给其他进程【英文标题】:Exposing a function to other processes 【发布时间】:2009-03-24 14:27:43 【问题描述】:我正在使用这段代码,它使用套接字公开一个简单的函数:
while (true)
try
ServerSocket serverSocket = new ServerSocket(7070);
Socket clientSocket = serverSocket.accept();
String input = (new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))).readLine();
synchronized (this.map)
ObjectOutputStream o = new ObjectOutputStream(clientSocket.getOutputStream());
o.writeChars(map.get(input));
o.close();
clientSocket.close();
serverSocket.close();
catch(Exception e)
e.printStackTrace();
我究竟做错了什么?日志显示它卡在输入接收行中,有时会抛出异常,说明套接字正在使用中
【问题讨论】:
【参考方案1】:首先,您在循环中创建 ServerSocket [i][i][/i],这显然不是您想要的。您只想创建一次,然后有一个不断从套接字读取的循环。
【讨论】:
【参考方案2】:readLine() 卡住了,因为您忘记刷新发送方(另一个进程)的输出流。
使用套接字时,计算机会缓冲一些数据(通常为 4KB),因为通过网络发送少量数据的成本很高。因此,如果您的数据较少,您需要告诉它“立即发送”。
【讨论】:
以上是关于将函数暴露给其他进程的主要内容,如果未能解决你的问题,请参考以下文章