服务器:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
new TCPServer().go();
}
public void go(){
ServerSocket ss;
Socket s = null;
try {
ss = new ServerSocket(8888);
s = ss.accept();
} catch (IOException e) {
e.printStackTrace();
}
SendThread send = new SendThread(s);//发送消息的线程
new Thread(send).start();
RecvThread recv = new RecvThread(s);//接收消息的线程
new Thread(recv).start();
}
class SendThread implements Runnable{
private Socket s = null;
private DataOutputStream dos = null;
public SendThread(Socket s){
this.s = s;
try {
dos = new DataOutputStream(s.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
String str = "";
while(true){
System.out.println("input message:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//从标准输入中读入数据
try {
str = br.readLine();
dos.writeUTF(str);//向服务器写数据
if("bye".equals(str))//判断是否结束会话
break;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class RecvThread implements Runnable{
private Socket s = null;
private DataInputStream dis = null;
public RecvThread(Socket s){
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());//从socket中读取服务器发送过来的数据
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
String str = "";
while(true){
try {
str = dis.readUTF();//从客户端读取数据
if("bye".equals(str))
break;
System.out.println("received message:"+str);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
转载于:https://blog.51cto.com/zouhao510/1105337