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();
}
}
}
相关文章推荐
- java多线程网络服务器端向客户端发送文件
- java使用多线程编程,实现socket服务器客户端交互
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- ServerSocket和Socket建立通信(客户端发送消息服务器接收输出)
- java socket 单服务器多客户端实时通信
- socket通信,TCP协议,有多个客户端,服务器怎么向指定IP及端口的客户端发送数据!
- Java 的 Socket 服务器和客户端通信的例子 存在一个小问题
- Socket与SocketServer结合多线程实现多客户端与服务器通信
- 局域网聊天工具(多线程),支持客户端与客户端间通信,服务器负责信息的接收与发送
- Java Socket(五) 服务器响应客户端
- 一个 Java 的 Socket 服务器和客户端通信的例子
- Java Socket编程服务器响应客户端实例代码
- 一个 Java 的 Socket 服务器和客户端通信的例子
- 局域网聊天工具(多线程),支持客户端与客户端间通信,服务器负责信息的接收与发送(client)
- 一个 Java 的 Socket 服务器和客户端通信的例子
- C#做客户端Java做服务器使用Socket通信的大小端序和行结束符的问题
- JAVA中Socket服务器/客户端的通信
- Linux下通过socket通信实现客户端向服务器发送文件
- 数据通信之数据转码字节映射加密发送:客户端c++和服务器java
- ServerSocket和Socket建立通信(客户端发送消息服务器接收并返回到客户端接收输出)