这里运用到的是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网络编程实现聊天小程序
发布评论