您的位置:首页 > 编程语言 > Java开发

java_多线程_socket通信_多个客户端发送,服务器响应

2017-09-28 08:55 555 查看
/**
* 服务器端不断接受请求
* 接受一个请求开启一段线程
*/
package 练习0927;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Sever {
public static void main(String[] args) throws Exception {

serverStart();

}

private static void serverStart() throws IOException {
ServerSocket server = new ServerSocket(12345);
System.out.println("服务器启动!");
while (true) {
final Socket socket = server.accept(); // 接受多次
new Thread() {
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
while (true) {
String result = br.readLine();
if ("下线".equals(result)) {
System.out.println("服务器下线");
socket.close();
} else {
ps.println("服务器收到了:");
System.out.println(result);
ps.flush();
}

}
} catch (Exception e) {
// TODO: handle exception
}

};
}.start();
}
}

}
/**
*
*/
package 练习0927;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {

public static void main(String[] args) throws Exception {

Socket socket = new Socket("127.0.0.1", 12345);
Scanner scanner = new Scanner(System.in);
System.out.println("客户端启动!");
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream ps = new PrintStream(socket.getOutputStream());
while (true) {
String result = scanner.nextLine();
if ("下线".equals(result)) {
ps.println(result);
ps.flush();
System.out.println("客户端下线");
socket.close();
} else {
ps.println(result);
ps.flush();
System.out.println(br.readLine());
}

}

}

}


******************************************************************************************************************************************

老师的代码:

*******************************************************************************************************************************************

package com.neuedu.demo;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server implements Runnable {
private Socket socket;
public Server(Socket socket){
this.socket=socket;
}

public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8888);
while (true) {
Socket socket = server.accept();
Server s=new Server(socket);
//一个任务单元
Thread thread=new Thread(s);
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}

}

@Override
public void run() {
while(true){
try {
InputStream in=socket.getInputStream();
DataInputStream dis=new DataInputStream(in);
String str=dis.readUTF();

OutputStream out=socket.getOutputStream();
DataOutputStream dos=new DataOutputStream(out);
dos.writeUTF(str);
dos.flush();

if(str.equals("bye")){
in.close();
out.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


package com.neuedu.demo;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 8888);

Scanner sc = new Scanner(System.in);
while (true) {
String str = sc.next();

OutputStream out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
dos.writeUTF(str);
dos.flush();

InputStream in = socket.getInputStream();
DataInputStream dis = new DataInputStream(in);
String strs = dis.readUTF();
System.out.println("客户端:"+strs);

if (str.equals("bye")) {
in.close();
out.close();
socket.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}

}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐