admin管理员组

文章数量:1794759

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

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

这里运用到的是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