基于Socket通信

1 篇文章 0 订阅

服务端:

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerSocketTest {
	
	public static void main(String[] args) throws Exception {
		ServerSocket s=new ServerSocket(9998);
		System.out.println("我在等待有人连接");
		Socket so=s.accept();
		System.out.println("有人连接了我:"+so.getInetAddress());
		OutputStream os=so.getOutputStream();
		PrintStream out=new PrintStream(os);
		Scanner key=new Scanner(System.in);
		ReadFormClient r=new ReadFormClient(so);
		r.start();
		while (true) {
			String keyreply=key.nextLine();
			out.println(keyreply);
			out.flush();
		}
	}
}
	//此线程负责从客户端读取数据
	class ReadFormClient extends Thread{
		Socket so;
		BufferedReader in;
		public ReadFormClient(Socket so) throws IOException {
			this.so=so;
			InputStream ins=so.getInputStream();
			Reader r=new InputStreamReader(ins);
			in=new BufferedReader(r);
		}
		public void run() {
			while(true) {
				try {
					String li=in.readLine();
					System.out.println("客户端说:"+li);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
	

客户端:

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.net.Socket;
import java.util.Scanner;

public class ClientTest {
	
	public static void main(String[] args) throws Exception{
		Socket s=new Socket("localhost", 9998);
		System.out.println("我是客户端:"+s.getInetAddress());
		OutputStream os=s.getOutputStream();
		PrintStream out=new PrintStream(os);
		Scanner key=new Scanner(System.in);
		//启用多线程读取服务器发的消息
		ReadFromServer r=new ReadFromServer(s);
		r.start();
		while (true) {
			String keyreply=key.nextLine();
			out.println(keyreply);
			out.flush();
		}
	}
}
class ReadFromServer extends Thread{
	Socket so;
	BufferedReader in;
	public ReadFromServer(Socket so) throws IOException {
		this.so = so;
		InputStream ins=so.getInputStream();
		Reader r=new InputStreamReader(ins);
		in=new BufferedReader(r);
	}
	public void run() {
		while (true) {
			try {
				String line=in.readLine();
				System.out.println("服务器端说:"+line);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值