tcp客户端和服务端互发消息

先封装一个工具类

package com.wxh.tcp;
//点对点聊天

import java.io.*;
import java.net.*;

public class Connection extends Thread {
	private Socket socket;
	private PrintWriter pw;
	private BufferedReader br;	
	
	public Connection(Socket socket) {
		super();
		this.socket = socket;
		//直接开启线程
		this.start();
	}

	//发送信息的方法
	public void send(String msg){
		//使用socket将msg写出去
		try {
			if(pw==null){
				pw=new PrintWriter(socket.getOutputStream());
			}
			//输出信息
			pw.println(msg);
			pw.flush();			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//关闭socket
	public void disConnect(){
		if(socket!=null){
			try {
				socket.close();
			} catch (Exception e) {
			}
		}
	}
	
	
	//接收功能(线程)
	public void run() {
		//不断读取服务器数据
		try {
			if(br==null){
				br=new BufferedReader
						(new InputStreamReader(socket.getInputStream()));
			}
			String msg=null;
			while((msg=br.readLine())!=null){
				System.out.println(msg);
			}			
		} catch (SocketException e) {
			System.out.println("下线了");
		} catch (IOException e) {
			e.printStackTrace();
		}	
	}
	
	public String getIp(){
		return this.socket.getInetAddress().getHostAddress();
	}
	
}

服务端代码

package com.wxh.tcp;
//这是服务端
import java.io.*;
import java.net.*;

public class ChatServer {

	public static void main(String[] args) {
		Connection connection=null;
		try {
			ServerSocket serverSocket=new ServerSocket(9090);
			Socket socket=serverSocket.accept();
			
			System.out.println(socket.getInetAddress()+"上线了");
			
			connection =new Connection(socket);
	
			//监听控制台,发送消息,服务端也可以发送消息
			BufferedReader br=new BufferedReader(new InputStreamReader(System.in));			
			String sendMsg=null;
			while((sendMsg=br.readLine())!=null){
				connection.send(sendMsg);
			}			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(connection!=null){
				connection.disConnect();
			}
		}
	}

}

客户端代码

package com.wxh.tcp;

import java.io.*;
import java.net.*;

public class ChatClient {
	public static void main(String[] args) {
		Connection  connection=null;
		try {
			Socket socket=new Socket("125.220.70.143",9090);
			System.out.println("已连接服务器");
			
			connection=new Connection(socket);
			
			//监听控制台,发送消息,客户端发送消息
			BufferedReader br=new BufferedReader
					(new InputStreamReader(System.in));
			
			String sendMsg=null;
			while((sendMsg=br.readLine())!=null){
				connection.send(sendMsg);
			}			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}		
	}
}



你可能感兴趣的:(Java,Java,Training)