java 多线程Echo server和client 例子

原创 2015年07月11日 03:50:06
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.ClientInfoStatus;


public class EchoMultiThreadServer {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ServerSocket server=null;
		try {
			server=new ServerSocket(8888);
			Socket client=null;
			boolean flag=true;
			while(flag){
				System.out.println("waiting....");
				client=server.accept();
				new Thread(new MultiThread(client)).start();;
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				server.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}

class MultiThread implements Runnable{
	Socket socket = null;
	PrintStream out = null;
	BufferedReader bur = null;

	public MultiThread(Socket s) {
		this.socket = s;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			System.out.println(socket);

			bur = new BufferedReader(new InputStreamReader(
					socket.getInputStream()));
			out = new PrintStream(socket.getOutputStream());

			boolean flag = true;
			while (flag) {
				String s = bur.readLine();
				if(s==null||"".equals(s)||"bye".equals(s)){
					flag=false;
				}
				else{
					out.println("Echo:"+s);
				}

			}
			System.out.println("close");
			bur.close();
			socket.close();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}




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

public class EchoClient {
	public static void main(String[] args) throws IOException{
		Socket socket=new Socket("127.0.0.1",8888);
		BufferedReader buf=null;
		PrintStream out=null;
		BufferedReader input=null;
		boolean f=true;
		buf=new BufferedReader(new InputStreamReader(socket.getInputStream()));
		out=new PrintStream(socket.getOutputStream());
		input=new BufferedReader(new InputStreamReader(System.in));
		while(f){
			System.err.println("输入信息:");
			String s=input.readLine();
			out.println(s);
			if(s.equals("bye")){
				f=false;
			}else{
				String echo= buf.readLine();
				System.out.println(echo);
			}
			
		}
		buf.close();
		socket.close();
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java网络编程之多线程Client-Server

前面废话过了,现在就直接看代码吧! ThreadedClient.java package exercise01; import java.io.*; import java.net.*; pu...

Java Socket编程 多线程server和client通信demo

server代码import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;...

用libevent多线程方式实现echo server

功能: 主线程同时监听定时器事件和IO事件,工作线程简单的监听IO事件。 主线程每隔一秒种向工作线程发送一条字符串信息 工作线程显示该信息并回显给主线程 该示例演示了主线程如何同时监听...

4种简单的echo server——简单阻塞型,多进程,多线程,epoll

学习linux网络编程的经典例子就是echo server了,本文给出了四种范式的echo server写法,当然会存在很多细节问题不深入了,一共包含五段, 第一个是common.h的头文件,是它们所...

socket套接字编写多线程多进程的server和client

关于套接字编程 套接字编程 IP地址+端口号就成为套接字 在TCP协议中。建立两个连接的进程个字有一个socket来标识,那么这两个socket组成desocketpair就表示一个唯一链接 ...

Linux局域网中 TCP 多线程 Server + Client 聊天室程序源码

#include #include #include #include #include #include #include #include #include #include ...

为多线程server端增加与client的交互通信功能

/*server.c*/ #include #include #include #include #include #include #include #include #inclu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)