网络编程实现的单人聊天功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ztyxy1115/article/details/78948868

此篇主要讲述网络编程如何实现本地聊天功能,和局域网之间的聊天功能

一、单人聊天

首先创建服务器,此处我们使用多线程分别实现读和写的功能,这样可以提高效率

服务器端的读的功能:

package one;

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

public class ServerTest {

	public static void main(String[] args) {
		try {
			ServerSocket serverSocket = new ServerSocket(8888);
			Socket socket = serverSocket.accept();//判断客户端是否连接上服务器,连接上通过Socket进行相互通信
			ServerThread th = new ServerThread(socket);
			th.start();//开启线程
			
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while(true){
				String message = br.readLine();
				System.out.println("读取客户端:"+message);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

服务器端写的功能:


package one;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

public class ServerThread extends Thread{
	private Socket socket;
	
	public ServerThread(Socket socket) {
		super();
		this.socket = socket;
	}

	@Override
	public void run() {
		Scanner sc = new Scanner(System.in);
		try {
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			while(true){
				String str = sc.nextLine();
				bw.write(str);
				bw.newLine();
				bw.flush();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

服务器端创建完成之后,下面就实现客户端的功能:

客户端的读取功能:

扫描二维码关注公众号,回复: 3079344 查看本文章
package one;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientTest {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("127.0.0.1", 8888);
			ClientThread th = new ClientThread(socket);
			th.start();
			
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while(true){
				String message = br.readLine();
				System.out.println("读取服务器端:"+message);
			}
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


客户端的写入功能:

package one;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientThread extends Thread{
	private Socket socket;

	public ClientThread(Socket socket) {
		super();
		this.socket = socket;
	}
	
	@Override
	public void run() {
		Scanner sc = new Scanner(System.in);
		try {
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			while(true){
				String str = sc.nextLine();
				bw.write(str);
				bw.newLine();
				bw.flush();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}


到此,单人聊天的功能都实现了,可以实现本地的聊天,如果想实现局域网内的聊天,只要把客户端的ip地址改成创建服务端的计算机的ip地址即可。



猜你喜欢

转载自blog.csdn.net/ztyxy1115/article/details/78948868