客户端与服务器通信

如何实现双向聊天?

客户端与服务器端的通信过程,包括读信息和写信息,对于客户端和服务器端,如果将数据传给对方,就称为写,用到输出流;反之,如果从对方处得到数据,就为读,用到输入流。
TCP编程中,客户端和服务器端之间的通信是通过Socket实现的。

如何向对方发送信息?
从java.net.Socket文档中,会发现其中有一个重要函数:
public OutputStream getOutputStream() throws IOException//打开此Socket的输出流。
for example:

Socket socket = new Socket("192.168.32.1",8080);
OutputStream os = socket.getOutputStream();

如何从对方处接收信息?
打开java.net.Socket文档,会发现其中有一个重要函数:
public InputStream getInputStream() throws IOException//打开此Socket的输入流。
for example:

Socket socket = new Socket("192.168.32.1",8080);
InputStream is = socket.getInputStream(); // 得到输入流

明显,实现客户端和服务器端的通信,既需要读操作,也需要写操作。

服务器端代码:

package chat2;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	public static void main(String[] args) throws Exception {
		ServerSocket ss = new ServerSocket(8080);
		Socket s = ss.accept();
		
		//获取对方传递过来的消息并打印
		InputStream in = s.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		String str = br.readLine();//读
		System.out.println(str);
	}

}

客户端代码:

package chat2;

import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;

public class Client {

	public static void main(String[] args) throws Exception {
		Socket socket = new Socket("192.168.32.1",8080);
		OutputStream os = socket.getOutputStream();//os只能发字节数组
		PrintStream ps = new PrintStream(os);//ps功能更强大
		ps.println("服务器,你好!");//信息发送出去
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_42882887/article/details/83213648