JavaSocket聊天器<二>客户端与服务端发送信息

客户端与服务端的信息传送

题接上篇,这篇博文记录的是:在客户端写信息输送给服务端。

关键性的点:理解Socket的作用,在服务端和客户端之间的桥梁作用,在通过输入输出流的相关操作,通过Socket得到相关信息。废话不多说:贴代码:

服务端:

public class Server {
	private ServerSocket server=null;
	private Socket socket=null;
	public Server(){
		try {
			System.out.println("服务器等待客户端连接......");
			//创建ServerSocket,并申请计算机的8088服务端口
			server = new ServerSocket(8088);
		    socket = server.accept();
			/*
			 * 监听Socket的连接--来自客户端的Socket的。
			 * 该方法是一个阻塞方法,直到一个客户端通过Socket连接后,accept会封装一个Socket,
			 * 该Socket封装与表示该客户端的有关的信息。通过这个Socket与该客户端进行通信。
			 */
			System.out.println("服务器连接成功");
		
			
		} catch (IOException e) {
			
			e.printStackTrace();
			
		}
	}
	
	public void start() throws IOException{
		InputStream in = socket.getInputStream();
		InputStreamReader isr = new InputStreamReader(in,"UTF-8");
		BufferedReader br = new BufferedReader(isr);
		String str = br.readLine();
		System.out.println(str);
		
		
	}
	
	public static void main(String[] args) throws IOException {
		Server server = new Server();
		server.start();
	}

}
客户端

public class Client {
	
	private Socket socket=null;
	public Client() throws IOException{
		
			socket = new Socket("localhost",8088);
			/*
			 * 创建Socket的同时就发起连接,若连接异常会抛出异常。
			 *  我们通常创建Socket时会传入服务端的地址以及服务端口号。
			 *  1,服务器IP地址
			 *  2,计算机服务端口
			 */
	
	}
	public void start() throws IOException{
		  Scanner scanner = new Scanner(System.in);
		  OutputStream out = socket.getOutputStream();
		  OutputStreamWriter osw =new  OutputStreamWriter(out,"UTF-8");
		  PrintWriter pw = new PrintWriter(osw,true);
		  pw.println(scanner.nextLine());
		
		  
	}
	
	public static void main(String[] args) throws IOException {
		Client client = new Client();
		client.start();
		

	}

}
总结:重要的知识点:还是那一句话,理解Socket,与Socket的相关流的操作。

未完待续.....

客户端可以通过以下步骤接收服务端发送过来的消息: 1. 创建Socket对象,指定要连接的服务的IP地址和端口号。 2. 使用Socket对象的getInputStream()方法获得输入流对象,该流对象可以读取服务发送过来的消息。 3. 使用输入流对象的read()方法读取服务端发送过来的消息,并将其保存在一个字符串变量中。 4. 关闭输入流对象和Socket对象。 下面是一个简单的Java客户端代码实现接收服务端发送过来的消息的示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Socket; public class Client { public static void main(String[] args) { try { // 创建Socket对象,指定要连接的服务的IP地址和端口号 Socket socket = new Socket("localhost", 8888); // 获取输入流对象,可以读取服务发送过来的消息 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 读取服务发送过来的消息,并将其保存在一个字符串变量中 String message = in.readLine(); System.out.println("接收到的消息:" + message); // 关闭输入流对象和Socket对象 in.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在实际使用时,可以将上述代码放在一个循环中,以便不断接收服务端发送过来的消息。同时,还可以使用多线程技术,让客户端可以同时接收多个服务端发送过来的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值