TestServer.java
package com.xiami.testServer;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
public class TestServer extends Thread {
private ServerSocket ss = null;
public TestServer(){
try {
ss = new ServerSocket(7456);
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
while(true){
try {
Socket socket = ss.accept();
ServerThread st = new ServerThread(socket);
st.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception {
new TestServer().start();
}
}
ServerThread.java
package com.xiami.testServer;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
public class ServerThread extends Thread{
private Socket socket ;
public ServerThread(Socket socket){
this.socket = socket;
}
public void run(){
try{
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
BufferedReader br =
new BufferedReader(new InputStreamReader(is));
PrintStream ps = new PrintStream(os);
while(true){
String temp = br.readLine();//读取客户端输入的消息
ps.println("服务器端消息:" + temp);//服务器端简单处理一下。
if(temp.equals("bye")){
//如果客户端输入bye,推出循环结束。
break;
}
}
ps.close();
br.close();
socket.close();
}catch(Exception rr){
rr.printStackTrace();
}
}
}
TestClient.java
package com.xiami.testServer;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TestClient {
public static void main(String[] args) throws Exception{
Socket so = new Socket("127.0.0.1",7456);
InputStream is = so.getInputStream();
OutputStream os = so.getOutputStream();
BufferedReader br = //客户从server的输入流
new BufferedReader(new InputStreamReader(is));
PrintStream ps = new PrintStream(os);
InputStreamReader isr =
new InputStreamReader(System.in);
BufferedReader key = //从键盘的输入流
new BufferedReader(isr);
while(true){
String temp = key.readLine();
ps.println(temp);//因为server用的是readline,必须用println
System.out.println(br.readLine());
if(temp.equals("bye")){
Thread.sleep(1000);//为了把bye更好的发送
break;
}
}
key.close();
ps.close();
br.close();
so.close();
}
}
运行方法:
首先运行TestServer.java启动服务器,开始监听7456端口,(7456端口为自定义端口。由于1-1024为某些系统的保留端口,请用1024以上的端口)
然后运行TestClient.java 在Cosole中输入一段文字。按回车后,便可以接受服务端返回的消息了。这样客户端和服务端便实现了通信。