使用Java套接字读/写

使用Java套接字读/写,java,sockets,inputstream,Java,Sockets,Inputstream,我已使用与服务器建立TCP连接 String hostName = ...; int portNumber = ...; SocketAddress addr = new InetSocketAddress(hostName, portNumber); Socket clientSocket = new Socket(); clientSocket.connect(addr, 100); 但是现在我想向那个服务器发送一条消息。 如何使用InputStreams实现这一点?使用and从套接字检索

我已使用与服务器建立TCP连接

String hostName = ...;
int portNumber = ...;
SocketAddress addr = new InetSocketAddress(hostName, portNumber);
Socket clientSocket = new Socket();
clientSocket.connect(addr, 100);
但是现在我想向那个服务器发送一条消息。
如何使用InputStreams实现这一点?

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

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在操作方面非常原始。例如,如果你想写一条短信,你可以使用


实现这一点有不同的方法。与套接字进行的大多数通信都是通过它们的输入/输出流进行的。向套接字发送消息的简单方法是:

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

Charset.getDefaultCharset.encodeString用于将字符串转换为字节数组,因为不可能通过套接字发送除字节以外的任何其他数据轻松查找序列化

实际上,除了字节数组之外,还有一些简单的读写方法。人们所要做的就是装饰溪流。我想这是真的;但是,开发自己的协议的乐趣何在;PI会说,不要将数据传输机制与协议混合使用。但我真的不明白你的意思,你不明白。您可以通过OutputStreams及其写入方法来实现它。
OutputStream output = clientSocket.getOutputStream();
output.write(Charset.getDefaultCharset().encode("Hello, world!"));