基于Socket的JAVA网络编程

Socket通信机制:

   使用Socket进行Client/Server程序设计一般连接过程如下:

   1.创建Socket。

   2.打开连接到Socket的输入/输出流。

   3.按照一定的协议对Socket进行读/写操作。

   4.关闭Socket。

    注:第3步是程序员来调用Socket和实现程序功能的关键步骤,其他3步在各种程序中基本相同。


简易通信程序设计:


                            ①、客户端                                                            ②、服务端

二、客户端Socket

  

public class TalkClient {

	public static void main(String[] args) {
		try{
			Socket socket=new Socket("127.0.0.1", 4700);
			//向本机的4700端口发送求情
			BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
			//由系统标准输入设备构造BufferedReader堆箱,用来接收我们输入的Client消息
			PrintWriter pt=new PrintWriter(socket.getOutputStream());
			//由Socket堆箱得到输出流
			BufferedReader bb=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			//由Socket对象输入流
			String line;
			line=br.readLine();
			while(!line.equals("byebye")){
				//若从标准系统输入读入的字符串为"byebye",则循环停止
				pt.println(line);
				pt.flush();//刷新输出流,使Server可以马上收到字符串
				System.out.println("客户端:"+line);
				System.out.println("服务端:"+bb.readLine());
				line=br.readLine();//从系统标准输入读入字符串
			}
			bb.close();//关闭输入流
			pt.close();//关闭输出流
			socket.close();//关闭Socket
		}catch(Exception e){
			System.out.println("错误"+e);
		}

	}

}

三、服务端ServerSocket(重新创建一个JAVA工程)

public class TalkServer {

	public static void main(String[] args) {
		try{
			ServerSocket server=null;
			try{
				server=new ServerSocket(4700);
				//创建一个ServerSocket监听端口为4700的客户请求
			}catch(Exception e){
				System.out.println("不能监听:"+e);
			}
			Socket socket=null;
			try{
				socket=server.accept();
				//使用accept()阻塞等待客户请求,
				//求情到来就产生一个Socket,并继续执行
			}catch(Exception e){
				System.out.println("错误:"+e);
			}
			BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
			BufferedReader bb=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter pt=new PrintWriter(socket.getOutputStream());
			System.out.println("客户端:"+bb.readLine());
			//在标准输入上打印出从客服端读入的字符串
			String line;
			line=br.readLine();
			//从标准输入读入一行字符串
			while(!line.equals("byebye")){
				pt.println(line);
				pt.flush();
				System.out.println("服务端:"+line);
				//在标准输入上打印出读入的字符串
				System.out.println("客户端:"+bb.readLine());
				//从Client读入一行字符串,并打印在标准输出上
				line=br.readLine();
			}
			bb.close();
			pt.close();
			socket.close();
			server.close();
		}catch(Exception e){
			System.out.println("错误"+e);
		}

	}

}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值