我已经使用
与服务器建立了TCP连接String hostName = ...;
int portNumber = ...;
SocketAddress addr = new InetSocketAddress(hostName, portNumber);
Socket clientSocket = new Socket();
clientSocket.connect(addr, 100);
但现在我想向该服务器发送消息
如何使用InputStreams
?
答案 0 :(得分:1)
使用getInputStream和getOutputStream从Socket
检索输入流和输出流。从那时起,您需要使用输出流(而不是输入流)向服务器发送消息:
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)
您可能希望将这些流装饰成其他类型以方便您的工作,因为InputStream
和OutputStream
在操作方面非常原始。例如,如果您要撰写短信,可以使用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转换为字节数组,因为不可能轻松地通过套接字发送除字节之外的任何其他数据(查找“序列化”)