使用Java套接字读/写

时间:2014-11-08 17:59:44

标签: java sockets inputstream

我已经使用

与服务器建立了TCP连接
String hostName = ...;
int portNumber = ...;
SocketAddress addr = new InetSocketAddress(hostName, portNumber);
Socket clientSocket = new Socket();
clientSocket.connect(addr, 100);

但现在我想向该服务器发送消息 如何使用InputStreams

执行此操作

2 个答案:

答案 0 :(得分:1)

使用getInputStreamgetOutputStreamSocket检索输入流和输出流。从那时起,您需要使用输出流(而不是输入流)向服务器发送消息:

Socket clientSocket = new Socket();
clientSocket.connect(addr, 100);
InputStream istream = clientSocket.getInputStream();
OutputStream ostream = clientSocket.getOutputStream();
 ... // write the message to ostream
 ... // read the server's reply from istream (if applicable)

您可能希望将这些流装饰成其他类型以方便您的工作,因为InputStreamOutputStream在操作方面非常原始。例如,如果您要撰写短信,可以使用PrintWriter

PrintWriter writer = new PrintWriter(ostream);
writer.print("My number: ");
writer.println(5);
writer.print("My name: ");
writer.println("John Doe");
writer.println("Done");
writer.flush();

答案 1 :(得分:1)

实现这一目标的方法有很多种。使用套接字完成的大多数通信都是通过其In / OutputStream进行的。将消息发送到套接字的简单方法是:

OutputStream output = clientSocket.getOutputStream();
output.write(Charset.getDefaultCharset().encode("Hello, world!"));

Charset.getDefaultCharset()。encode(String)用于将String转换为字节数组,因为不可能轻松地通过套接字发送除字节之外的任何其他数据(查找“序列化”)