Socket多线程编程 serversocket服务器多线程编程

it2022-07-05  227

Socket多线程编程 serversocket服务器多线程编程

服务器代码

package com.lotus.server;

import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask;

public class SocketServer { List<Socket> list; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SocketServer socketServer=new SocketServer(); socketServer.startServer(); if(Thread.activeCount()>1){ Thread.yield(); }

} public void startServer(){ ServerSocket serverSocket=null; try { list=new ArrayList<Socket>(); serverSocket=new ServerSocket(9898); new MeldSocket(serverSocket).start();

} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } class MeldSocket extends Thread{ private ServerSocket serverSocket; public MeldSocket(ServerSocket serverSocket){ this.serverSocket=serverSocket; } @Override public void run() { // TODO Auto-generated method stub Socket socket; while(true){

try { socket = serverSocket.accept(); new ReaderThread(socket).start(); new WriterThread(socket).start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class WriterThread extends Thread{ private Socket socket=null;// BufferedReader inputReader=null; BufferedWriter writer=null; public WriterThread(Socket socket){ this.socket=socket; } @Override public void run() { // TODO Auto-generated method stub try { System.out.println("开始输入"); writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));// inputReader=new BufferedReader(new InputStreamReader(System.in)); new Timer().schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub try { writer.write("老子在做测试\n"); writer.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }, 1000, 10000);// String inputContent;// while((inputContent=inputReader.readLine())!="byte"){// System.out.println(inputContent);//// }

} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class ReaderThread extends Thread{ private Socket socket=null; BufferedInputStream reader=null; public ReaderThread(Socket socket){ this.socket=socket; } @Override public void run() { // TODO Auto-generated method stub try {

reader=new BufferedInputStream(socket.getInputStream()); System.out.println("接收到输入的信息");

int len=0; byte[] bty=new byte[1024]; while ((len = reader.read(bty)) != -1) { String inputContent=new String(bty,0,len); System.out.println(inputContent); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { reader.close(); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}

 

客户端代码

package com.lotus.pushlangconnect;

import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.Socket;

import javax.sound.sampled.AudioFormat.Encoding;

public class SocketClient {

public SocketClient() { } public static void main(String[] args) throws IOException { SocketClient client=new SocketClient(); client.start(); } public void start() throws IOException{ Socket socket=null; try { socket=new Socket("localhost", 9898); new ReaderThread(socket).start(); new WriterThread(socket).start();

 

} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }

} class WriterThread extends Thread{ private Socket socket=null; BufferedReader inputReader=null; BufferedWriter writer=null; public WriterThread(Socket socket){ this.socket=socket; } @Override public void run() { // TODO Auto-generated method stub try { System.out.println("开始输入"); writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); inputReader=new BufferedReader(new InputStreamReader(System.in)); String inputContent; while((inputContent=inputReader.readLine())!="byte"){// System.out.println(inputContent); writer.write(inputContent); writer.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { writer.close(); inputReader.close(); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class ReaderThread extends Thread{ private Socket socket=null; BufferedReader reader=null; public ReaderThread(Socket socket){ this.socket=socket; } @Override public void run() { // TODO Auto-generated method stub try {

reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));

String respsonseContent; while((respsonseContent=reader.readLine())!=null){ System.out.println(respsonseContent); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { reader.close(); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}

转载于:https://www.cnblogs.com/lotus-emperor/p/4761386.html

相关资源:各显卡算力对照表!

最新回复(0)