多线程服务器



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class mythread extends Thread{
	/*
	 * 服务器多线程处理
	 */
	Socket sock=null;

	public mythread(Socket sock) {
		this.sock = sock;
	}	
	//相应客户端请求
	public void run(){
		InputStream is = null;
		InputStreamReader isr = null;
		BufferedReader br = null;
		//服务端向客户端发数据
		OutputStream os = null;
		PrintWriter pw = null;
		try {
			is = sock.getInputStream();
			isr = new InputStreamReader(is);
			br = new BufferedReader(isr);
			String s = br.readLine();
			while(s!=null){
				System.out.println("客户端说"+s);
				s=br.readLine();
			}
			sock.shutdownInput();//可以不写
			os = sock.getOutputStream();
			pw = new PrintWriter(os);
			pw.write("我是赵瑾的服务端");
			os.flush();
			//关闭
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		//sock.shutdownOutput();
		finally{
			try {
				if(pw!=null)
					pw.close();
				if(os!=null)
					os.close();
				if(br!=null)
					br.close();
				if(isr!=null)
					isr.close();
				if(is!=null)
					is.close();
				//ss.close();
				if(sock!=null)
					sock.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

import org.junit.Test;
public class server {
	@Test
	public void demo1() throws IOException{
		//创建一个端口号为8888的服务端socket
		ServerSocket ss = new ServerSocket(8887);
		//调用accept方法等待客户端连接
		System.out.println("服务器准备启动");
		int count=0;
		while(true){
			Socket sock = ss.accept();
			mythread mt=new mythread(sock);//创建线程
			mt.run();//
			count++;
			System.out.println(count);
		}
	}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import org.junit.Test;

public class client {
	@Test
	public void demo1() throws UnknownHostException, IOException{
		//创建客户端socket,并指定端口号和地址
		Socket client = new Socket("localhost", 8887);
		//获得输出流向服务器发送数据
		OutputStream os = client.getOutputStream();//字节输出流
		PrintWriter pw=new PrintWriter(os);
		pw.write("我是赵瑾的客户端");
		pw.flush();//刷新缓存
		client.shutdownOutput();//可以不写
		//客户端接收服务端的数据
		InputStream is = client.getInputStream();
		InputStreamReader isr=new InputStreamReader(is);
		BufferedReader br=new BufferedReader(isr);
		String s = br.readLine();
		while(s!=null){
			System.out.println("服务端说"+s);
			s=br.readLine();
		}

		//关闭资源
		//client.shutdownInput();
		br.close();
		isr.close();
		is.close();
		pw.close();
		os.close();
		client.close();
	}
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值