这里运用到的是Java基于TCP的socket编程,详细讲解,请自行百度。
我这里分三步,贴出代码!

1.客户端

ClientTest01.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.Socket;
import java.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ClientTest01 {
	
	public static void main(String[] args) {
		BufferedReader br = null;
		 String clientStr="";
		try {
			//建立通信端口,并向服务器端发送通信请求
			Socket s = new Socket("10.25.200.153",3838);
		    System.out.println("与服务器端建立连接");
		    BusinessHanderTest01 send = new BusinessHanderTest01(s);
			Thread t1 = new Thread(send);
			t1.start();
			   while(true){
				    
					//获取客户端通信的信息
				   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			
				   br = new BufferedReader(new InputStreamReader(s.getInputStream()));
				   clientStr = br.readLine();
				   System.out.println(df.format(new Date())+"  服务器端 :  "+clientStr);
			   }
		    
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

注:Socket s = new Socket(“10.25.200.153”,3838);中的第一个参数是服务器端的网络地址,第二个参数是服务器开放的端口号。

2.服务器端

ServerTest01.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.InetAddress;
import java.ServerSocket;
import java.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ServerTest01 {
	public static void main(String[] args) throws IOException {
		 BufferedReader br = null;
		 String clientStr="";
		 ServerSocket ss  = null;
		 
		  try {
			//创建一个监听的端口
			ss = new ServerSocket(3838);
			Socket s = null;
		    System.out.println("服务器启动...");
		    System.out.println("本机IP地址:"+InetAddress.getLocalHost());
			//接受客户端通信请求,并建立专用通信端口
		    s = ss.accept();
			System.out.println("客户端已连接...");
			BusinessHanderTest01 send = new BusinessHanderTest01(s);
			Thread t1 = new Thread(send);
			t1.start();
		   while(true){
			    
			   //获取客户端通信的信息
			   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			   br = new BufferedReader(new InputStreamReader(s.getInputStream()));
			   clientStr = br.readLine();
			   
			   System.out.println(df.format(new Date())+"  客户端:  "+clientStr);
		   }
		  } catch (Exception e) {
			e.printStackTrace();
		  }finally {
			  ss.close();
		  }
		}
}

注:ss = new ServerSocket(3838);中的参数是该服务器端开放的端口号,需要与客户端填写的端口号保持一致。

3.多线程助手

BusinessHanderTest01 .java

import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.Socket;
import java.util.Scanner;

public class BusinessHanderTest01 implements Runnable{
	Socket s ;
	Scanner in = new Scanner(System.in);

	public BusinessHanderTest01(Socket s){
		this.s = s;
	}
	public void run() {

		PrintWriter out = null;
		try {
			while(true){
				out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true);
				String str = in.nextLine();
			    out.println(str);
	
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			out.close();
		}
		
	}
	
}

运行时,需要服务器端先开启,等待客户端连接,不然会报错!

更多推荐

java网络编程实现聊天小程序