• 网络编程-1


    一、服务端

     1 public class SocketServer implements Runnable {
     2 
     3     //端口
     4     private final int port;
     5     
     6     private ServerSocket ss;
     7     
     8     /**
     9      * 
    10      */
    11     public SocketServer(int port) {
    12         this.port = port;
    13     }
    14     
    15 
    16     public void server(){
    17 //        socket(AF_INET,SOCK_STREAM,IPPOTO_TCP);
    18         try {
    19             // 服务端阻塞接收客户端请求
    20             Socket s = ss.accept();
    21             //输入流封装
    22             DataInputStream din = new DataInputStream(s.getInputStream());
    23             //数据接受
    24             String req = din.readUTF();
    25             System.out.println("服务端请求数据:"+req);
    26             //输出流封装
    27             DataOutputStream dou = new DataOutputStream(s.getOutputStream());
    28             String s1 = "收到,收到。我是08";
    29             //数据发送
    30             dou.writeUTF(s1);
    31             //刷出数据
    32             dou.flush();
    33             //关闭流和socket
    34             dou.close();
    35             din.close();
    36
    37             s.close();
    38         } catch (IOException e) {
    39             // TODO Auto-generated catch block
    40             e.printStackTrace();
    41         }
    42     }
    43 
    44     /**
    45      * runnable接口
    46      */
    47     public void run() {
    48         // TODO Auto-generated method stub
    49         try {
    50             System.out.println("服务端启动 ,开启:"+port+"端口");
    51             ss = new ServerSocket(port);
    52         } catch (IOException e) {
    53             // TODO Auto-generated catch block
    54             e.printStackTrace();
    55         }
    56         while(true){
    57             server();
    58         }
    59     }
    60 
    61     public static void main(String[] args) {
    62         SocketServer ss = new SocketServer(8090);
    63         
    64         Thread th = new Thread(ss);
    65         
    66         th.start();
    67     }
    68 }

    二、客户端

     1 public class SocketClient{
     2     
     3     /**
     4      * 连接服务器
     5      */
     6     public void client(){
     7         Socket so = null; 
     8         try {
     9             //根据ip和端口来获取socket对象
    10             so = new Socket("192.168.0.114",8090);
    11             //根据socket对象来获取输出流
    12 //            OutputStream out = so.getOutputStream();
    13             //根据socket对象来获取输出流
    14             DataOutputStream out = new DataOutputStream(so.getOutputStream());
    15             //获取本地的ip
    16             System.out.println(so.getLocalAddress());
    17             //获取本地的端口
    18             System.out.println(so.getLocalPort());
    19             //根据socket对象来获取输入流,获取目标对象的返回信息
    20 //            InputStream out = so.getInputStream();
    21             DataInputStream in = new DataInputStream(so.getInputStream());
    22             //返回信息接D收byte数组
    23             byte[] b = new byte[1024];
    24             //定义发送过去的信息
    25 //            String str = "bye";
    26             //将String类型转换为byte数组,并将编码格式设置为utf-8
    27 //            byte[] by = str.getBytes("UTF-8");
    28             //通过输出流发送信息
    29 //            out.write(by);
    30             out.writeUTF("我是07,我是07,收到请回复");
    31             //将信息刷过去
    32             out.flush();
    33             //通过输入流获取返回的信息并存储到byte数组b中
    34 //            in.read(b);
    35             //直接读取utf格式
    36             String resp=in.readUTF();
    37             //打印接受的信息,并将byte数组转换为String类型,并将编码格式转换为utf-8
    38 //            System.out.println(new String(b,"utf-8"));
    39             System.out.println(resp);
    40             //关闭输入流、输出流和socket
    41             in.close();
    42             out.close();
    43             so.close();
    44         } catch (UnknownHostException e) {
    45             // TODO Auto-generated catch block
    46             e.printStackTrace();
    47         } catch (IOException e) {
    48             // TODO Auto-generated catch block
    49             e.printStackTrace();
    50         }
    51     }
    52     
    53     
    54     public static void main(String[] args) {
    55         SocketClient sc = new SocketClient();
    56         sc.client();
    57     }
    58 
    59 }
  • 相关阅读:
    使用迭代器模式批量获得数据(C#实现)
    如何从技术上预防抢票软件刷屏
    如何用Tesseract做日文OCR(c#实现)
    我的.net开发百宝箱
    程序员必备基础:Git 命令全方位学习
    Java 异常处理的十个建议
    50道Java集合经典面试题(收藏版)
    记一次接口性能优化实践总结:优化接口性能的八个建议
    100道MySQL数据库经典面试题解析(收藏版)
    800+Java后端经典面试题,希望你找到自己理想的Offer呀~
  • 原文地址:https://www.cnblogs.com/kongkongFabian/p/6391213.html
Copyright © 2020-2023  润新知