------------------------------------java的TCP网络通信作业题------------------------------------------
本机IP127.0.01,只能进行本地访问。
先有服务端,再有客服端
题目:用TCP做相互聊天的程序
聊天必须要有服务端,和客服端
首先创建服务端
public class TCPServer {
/**
* 服务端的端口
*/
privateint port;
public TCPServer(int port) {
super();
this.port = port;
Receive r = new Receive();
Thread t = new Thread(r);
t.start();
}
class Receive implements Runnable{
@Override
public void run() {
//创建服务端的Socket
ServerSocket ss = null;
Socket s = null;
BufferedReader br =null;
try {
ss = new ServerSocket(port);
System.out.println(port+"服务器已经启动");
//接收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) {
System.out.println(ia.getHostAddress() + "说:" + line);
if("exit".equals(line)) {
System.out.println("服务端关闭");
break;
}
}
} 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(10003);
}
}
-------------------------------------------------------
创建客服端
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 os = s.getOutputStream();
bw = new BufferedWriter(new OutputStreamWriter(os));
String line = null;
while((line = br.readLine())!= null) {
System.out.println("请说话:");
if("exit".equals(line)) {
System.out.println("客服端关闭");
break;
}
System.out.println("我说:/r/n"+line);
bw.write(line);
bw.newLine();
bw.flush();
}
} catch (IOException 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) {
new TCPClient("192.168.1.104", 10003);
}
}