package cn.wlt.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
*服务器端
*/
public class TCPServer {
//端口
private int port;
public TCPServer(int port) {
super();
this.port = port;
Recevice r=new Recevice();
//创建线程
Thread t= new Thread(r);
//启动线程
t.start();
}
class Recevice implements Runnable{
@Override
public void run() {
ServerSocket ss=null;
Socket s=null;
BufferedReader br=null;
try {
//创建服务器端的服务套接字 Socket
ss=new ServerSocket(port);
System.out.println("服务器已经启动...");
//接收Socket
s = ss.accept();
//获得客户端的IP
InetAddress ia = s.getInetAddress();
//获得输入流
InputStream in = s.getInputStream();
//字节流转换城字符流
br=new BufferedReader(new InputStreamReader(in));
String line=null;
while((line=br.readLine())!=null){
if("exit".equals(line)){
System.out.println("欢迎使用...");
break;
}
System.out.println(ia.getHostAddress()+"说:"+line);
}
System.out.println("sssss");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(br!=null)
br.close();
if(s!=null)
s.close();
if(ss!=null)
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new TCPServer(10000);
}
}
package cn.wlt.chat;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/**
*客户端 测试的时候开启两个eclipse就可以啦
*/
public class TCPClient {
private String ip;
private int port;
public TCPClient(String ip, int port) {
super();
this.ip = ip;
this.port = port;
Sender s=new Sender();
Thread t=new Thread(s);
t.start();
}
class Sender implements Runnable {
@Override
public void run() {
Socket s = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
s = new Socket(ip, port);
// 从控制台输入
br = new BufferedReader(new InputStreamReader(System.in));
// 获得输出通道
OutputStream out = s.getOutputStream();
// 创建输出流
bw = new BufferedWriter(new OutputStreamWriter(out));
String line = null;
while ((line = br.readLine()) != null) {
if ("exit".equals(line)) {
System.out.println("欢迎使用...");
break;
}
System.out.println("我说:\r\n" + line);
bw.write(line);
bw.newLine();
// 清缓存
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (br != null)
br.close();
if (s != null)
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
try {
new TCPClient(InetAddress.getLocalHost().getHostName(), 20000);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}