socket實現服務端多執行緒,客戶端重複輸入
服務端
package wanfeng;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server2 extends Thread {
private ServerSocket ss=null;
private int clientcounter=0;
public Server2()
{
try {
ss=new ServerSocket(9999);
} catch (IOException e) {
System.out.println("繫結埠失敗!"+e.getMessage());
}
}
public void run()
{
Socket s= null;
try {
while(true) {
s = ss.accept();
clientcounter++;
SockerThread sockerThread = new SockerThread(s, clientcounter);//沒次接受一個,開啟一個多執行緒
sockerThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
if(ss!=null) {
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
Server2 server2=new Server2();
server2.start();
}
}
服務端實現開啟多執行緒
package wanfeng;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class SockerThread extends Thread {
private Socket s = null;
private int clientcounter=0;
public SockerThread(Socket s,int clientcounter)
{
this.s=s;
this.clientcounter=clientcounter;
System.out.println("有新執行緒連線了:當前執行緒數為:"+clientcounter+"執行緒id:"+currentThread().getId());
}
public void run()
{
//InputStream inputStream=null;
try {
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(s.getInputStream()));
/*inputStream=s.getInputStream();
byte[] buf=new byte[1024];
int num=inputStream.read(buf);
String string = new String(buf,0,num);*/
String string = "";
while((string = bufferedReader.readLine())!=null) {
System.out.println(s.getInetAddress().toString() + ": " + string + " " + "客戶端id: " + clientcounter);
}
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客戶端
package wanfeng;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client2 {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
Socket socket = new Socket("127.0.0.1",9999);
//OutputStream outputStream=socket.getOutputStream();
PrintWriter out=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
String str="";
while((str=scanner.nextLine())!=null)
{
out.println(str);
out.flush();
if(str.equals("q"))
break;
}
socket.close();
}
}
相關文章
- Qt實現基於多執行緒的檔案傳輸(服務端,客戶端)QT執行緒服務端客戶端
- php原生socket實現客戶端與服務端資料傳輸PHP客戶端服務端
- C/S(socket、執行緒 實現多個客戶端、伺服器端簡易通訊)執行緒客戶端伺服器
- java socket 通訊socketServer 服務端多執行緒JavaServer服務端執行緒
- Java多執行緒技術:實現多使用者服務端Socket通訊Java執行緒服務端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- 客戶端,服務端客戶端服務端
- 服務端,客戶端服務端客戶端
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- 客戶端與服務端Socket通訊原理詳解客戶端服務端
- Android實現Thrift服務端與客戶端Android服務端客戶端
- 【Java】Java多執行緒實現的聊天客戶端和伺服器Java執行緒客戶端伺服器
- ZooKeeper服務發現客戶端--重連認證客戶端
- 實現客戶端與服務端的HTTP通訊客戶端服務端HTTP
- ZooKeeper服務發現客戶端客戶端
- Socket最簡單的客戶端與服務端通訊-Java客戶端服務端Java
- Qt實現網路聊天室(客戶端,服務端)QT客戶端服務端
- Java建立WebService服務及客戶端實現JavaWeb客戶端
- 使用多種客戶端消費WCF RestFul服務(一)——服務端客戶端REST服務端
- windows socket簡單使用--實現客戶端連結服務端併傳送和接收資料Windows客戶端服務端
- Java的oauth2.0 服務端與客戶端的實現JavaOAuth服務端客戶端
- 模板,從服務端到客戶端服務端客戶端
- 服務端渲染和客戶端渲染服務端客戶端
- Java建立WebService服務及客戶端實現(轉)JavaWeb客戶端
- HTML轉PDF的純客戶端和純服務端實現方案HTML客戶端服務端
- SSLSocket實現服務端和客戶端雙向認證的例子服務端客戶端
- python實現兩臺不同主機之間進行通訊(客戶端和服務端)——SocketPython客戶端服務端
- 實現服務端和客戶端的實時雙向資料傳輸-WebSocket簡單瞭解服務端客戶端Web
- PHP-Socket服務端客戶端傳送接收通訊例項詳解PHP服務端客戶端
- 「iOS」行車服務app 「客戶端、後端思路+程式碼」iOSAPP客戶端後端
- C語言透過socket實現TCP客戶端C語言TCP客戶端
- Spring Boot 整合 WebSocket 實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- Laravel後臺作為客戶端,socket.io作為服務端,App或其他作為另一個客戶端Laravel客戶端服務端APP
- OSSEC服務端配置客戶端批次部署方案服務端客戶端
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- 利用執行緒池給客戶端傳檔案執行緒客戶端
- Python socket的客戶端Python客戶端
- C++客戶端程式(socket)C++客戶端