socket简单通信

效果:client和server彼此响应

在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

步骤一:D盘下添加2个java文件(见文末)
在这里插入图片描述
步骤二:将myclient.java中的IP更新
在这里插入图片描述
步骤三:编译这2个java文件
定位到D盘java目录下
在这里插入图片描述
编译myserver.java和myclient.java
在这里插入图片描述
步骤四:执行这2个java文件(需要开两个cmd窗口)
在这里插入图片描述在这里插入图片描述
步骤五:互发消息,任务完成
在这里插入图片描述
附文件代码:
myserver.java

  import   java.net.*;    
  import   java.io.*;    
  import   java.lang.*;    
   
  public   class   myserver{ 
	
  public   static   void   main(String   args[]){    
  ServerSocket   server;    
  Socket   socket;    
  String   s;    
  InputStream   Is;    
  OutputStream   Os;    
  DataInputStream   DIS;    
  PrintStream   PS;    
   
  try{    
  //在端口10006注册服务    
  server=new   ServerSocket(10010); 
  System.out.println("server   ok");    
  System.out.println("************************************************");    
  System.out.println(""); 
  
  socket=server.accept();   //监听窗口,等待连接    
   
  //获得对应Socket的输入/输出流    
  Is=socket.getInputStream();    
  Os=socket.getOutputStream();    
  //建立数据流    
  DIS=new   DataInputStream(Is);    
  PS=new   PrintStream(Os);    
  DataInputStream   in=new   DataInputStream(System.in);    
  while(true){    
  System.out.println("");    
  System.out.println("please   wait   client's   message...");    
  System.out.println("");    
  s=DIS.readLine();   //读入从client传来的字符串    
  System.out.println("client   said:"+s);   //打印字符串    
  if(s.trim().equals("BYE"))break;   //如果是"BYE",就退出    
  System.out.print("you   say:");    
  s=in.readLine();   //读取用户输入的字符串    
  PS.println(s);   //将读取得字符串传给client    
  if(s.trim().equals("BYE"))break;   //如果是"BYE",就退出    
   
  }    
   
  //关闭连接    
  DIS.close();   //关闭数据输入流    
  PS.close();   //关闭数据输出流    
  Is.close();   //关闭输入流    
  Os.close();   //关闭输出流    
  socket.close();   //关闭socket   
  }    
  catch(Exception   e){    
  System.out.println("Error:"+e);    
  }    
  }    
  }     



myclient.java

  import   java.net.*;    
  import   java.io.*;    
  import   java.lang.*;    
   
  public   class   myclient{    
  public   static   void   main(String   args[]){    
  //if   (args.length<1){   //判断命令加参数没有    
  //System.out.println("you   forget   the   name   of   the   server!");    
  //System.out.println("see   also:   myclient   yxf");    
 // System.exit(1);   //如果没加参数就退出    
  //}    
   
  Socket   socket;    
  String   s="jsjwl09@dqpi.edu.cn";    
  String   len;    
  InputStream   Is;    
  OutputStream   Os;    
  DataInputStream   DIS;    
  PrintStream   PS;    
  try{    
  //向主机名为args[0]的服务器申请连接  
  

  //注意端口号要与服务器保持一致:10010    
  socket=new   Socket("***.***.**.***",10010);    //这儿需要更改
   
  System.out.println("client   ok");    
  System.out.println("************************************************");    
  System.out.println("");    
   
  //获得对应socket的输入/输出流    
  Is=socket.getInputStream();    
  Os=socket.getOutputStream();    
  //建立数据流    
  DIS=new   DataInputStream(Is);    
  PS=new   PrintStream(Os);    
  DataInputStream   in=new   DataInputStream(System.in);    
   
  while(true){    
  System.out.print("you   say:");    
  s=in.readLine();   //读取用户输入的字符串    
  PS.println(s);   //将读取得字符串传给server    
  if(s.trim().equals("BYE"))break;   //如果是"BYE",就退出    
  else    
  {    
  System.out.println("");    
  System.out.println("please   wait   server's   message...");    
  System.out.println("");    
  }    
  s=DIS.readLine();   //从服务器获得字符串    
  System.out.println("server   said:"+s);   //打印字符串    
  if(s.trim().equals("BYE"))break;   //如果是"BYE",就退出    
   
  }    
   
  //关闭连接    
  DIS.close();   //关闭数据输入流    
  PS.close();   //关闭数据输出流    
  Is.close();   //关闭输入流    
  Os.close();   //关闭输出流    
  socket.close();   //关闭socket    
  }    
  catch(Exception   e){    
  System.out.println("Error:"+e);    
  }    
  }    
  }    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

todaycode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值