美文网首页
Java Socket编程(网络编程)

Java Socket编程(网络编程)

作者: 呦西小强 | 来源:发表于2018-02-08 10:57 被阅读0次

    一、Socket概要

      Java的网络编程主要涉及到的内容是Socket编程,那么什么是Socket呢?简单地说,Socket,套接字,就是两台主机之间逻辑连接的端点(由IP地址、TCP/IP协议、端口号组成)。Socket,本质上就是一组接口,是对TCP/IP协议的封装和应用(程序员层面上)。
      TCP/IP协议组可以分为四个层次:
        应用层: HTTP协议、FTP协议
        传输层: TCP协议(面向有连接)、UDP协议(面向无连接)
        网络层: IP协议、ICMP协议
        网络接口层: 设备接口程序

    二、案例

      (1)客户端:

    import java.io.OutputStream;
    import java.net.Socket;
    
    
    public class Client {
    
        public static void main(String[] args) throws Exception{
            
            // 要连接的服务端IP地址和端口
            String host = "127.0.0.1"; 
            
            int port = 55533;
            
            // 与服务端建立连接
            Socket socket = new Socket(host, port);
            
            // 建立连接后获得输出流
            OutputStream outputStream = socket.getOutputStream();
            
            String message="Hello Server I'm Client!";
            
            socket.getOutputStream().write(message.getBytes("UTF-8"));
            
            outputStream.close();
            
            socket.close();
           
        }
    }
    

      (1)服务器端:

    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    public class Server {
        
        public static void main(String[] args) throws Exception{
            // 监听指定的端口
            int port = 55533;
            
            ServerSocket server = new ServerSocket(port);
            
            // server将一直等待连接的到来
            Socket socket = server.accept();
            
            // 建立好连接后,从socket中获取输入流,并建立缓冲区进行读取
            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int len;
            StringBuilder sb = new StringBuilder();
            
            while ((len = inputStream.read(bytes)) != -1) {
                
              sb.append(new String(bytes, 0, len,"UTF-8"));
              
            }
            
            System.out.println("接收到客户端消息:" + sb);
          
            inputStream.close();
            socket.close();
            server.close();
        }
        
    }
    

    大家可以尝试修改变成两端进行相互通信的案例,有什么错误或者疑问,请留言讨论

    相关文章

      网友评论

          本文标题:Java Socket编程(网络编程)

          本文链接:https://www.haomeiwen.com/subject/pnizzxtx.html