socket多线程

//修改yangkunlin的代码

服务器端:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server{
public static final int PORT=8888;
public static void main(String args[])throws Exception{
System.out.println("服务器正在等待连接中...");

Server server=new Server();
server.oper();


}

public void oper()throws Exception{
ServerSocket serverSocket=new ServerSocket(PORT);
boolean flag=true;

while(flag){
System.out.println("连接之后输入exit就退出服务器端");
Socket socket=serverSocket.accept();//进入阻塞状态,等待客户端的连接
ServerThread serverThread=new ServerThread(socket);
new Thread(serverThread).start();
String str=new BufferedReader(new InputStreamReader(System.in)).readLine();
if(str.equals("exit")){
socket.close();
flag=false;
}

}
}
};

class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket=socket;
}
public void run(){
try{
//读取客户端的数据
DataInputStream input=new DataInputStream(socket.getInputStream());
//向客户端发送的数据
DataOutputStream out=new DataOutputStream(socket.getOutputStream());
//读取客户端的数据
System.out.println("客户端传过来的数据:"+input.readUTF());
System.out.print("请输入:\t");
//发送键盘输入的一行
String s=new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(s);
input.close();
out.close();

}catch(Exception e){
System.out.println(e);
}



}



}



客户端:
import java.net.Socket;
import java.net.*;
import java.io.*;
public class Client{
public static final int PORT=8888;
public static final String IP="localhost";

public static void main(String args[])throws Exception{
System.out.println("客户端..");
System.out.println("当接收的\"bye\"的时候,客户端终止连接");
boolean flag=true;
Socket client=null;
while(flag){
client=new Socket(IP,PORT);
//读取服务器端数据
DataInputStream input=new DataInputStream(client.getInputStream());
//向服务器端端发送的数据
DataOutputStream out=new DataOutputStream(client.getOutputStream());
System.out.print("请输入:\t");
//从键盘接收数据
String s=new BufferedReader(new InputStreamReader(System.in)).readLine();
out.writeUTF(s);

//服务器端返回过来的数据
String recS=input.readUTF();
System.out.println("服务器端返回过来的数据:"+recS);

if("bye".equals(recS)){

System.out.println("客户端将关闭");
Thread.sleep(500);
flag=false;

}
}
client.close();


}





}

运行如下:[img]http://dl2.iteye.com/upload/attachment/0089/7207/43b46749-a43a-34ae-a95b-386da72b5459.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值