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();
}
}
}