Socket的使用

1.socket是网络编程,又称套接字编程.

2.socket使用TCP/UDP协议

3.TCP分为:应用层,会话层,表示层,传输层,网络层,数据链路层,物理层

 UDP分为:网络层,网际层,应用层

4.服务器使用ServerSocket(port)

 客户端使用Socket(ip,port)

5.在服务器和客户端之前传输使用IO通道,以队列的方式进行传送

6.步骤:

  服务器,客户端:

    1.创建ServerSocket(socket)对象,设置端口号

    2.创建InputStream流对象

    3.读取IO流

    4.shutdown结束流

    5.关闭流对象

服务器端代码

/**
 * 
 * @author Administrator
 * 服务器端
 */
public class serverSocket {
    
    public static void main(String[] args) {
        
        try {
            //1.创建socket服务器端对象
            ServerSocket serverSocket = new ServerSocket(8080);
            
            //2.通过accept这个方法可以获得客户端是否连接成功了,如果链接成功返回一个对象
            Socket scoket = serverSocket.accept();
            InetAddress inetAddress = serverSocket.getInetAddress();
            String hostAddress = inetAddress.getHostAddress();
            System.out.println(hostAddress);//获取的是服务器本身的ip地址
            System.out.println("获取服务器端ip地址"+inetAddress.toString());
            if(scoket != null){
                //连接成功
                System.out.println("socket客户端连接成功");
            
            //3.通过InputStream获取客户端传来的数据信息
                //创建inputStream对象
                InputStream in = scoket.getInputStream();            //定义一个字节数组
                byte[] bt = new byte[1024];
                //定义长度
                int len;
                FileOutputStream out = new FileOutputStream("aa\cc.txt");
                while((len = in.read(bt)) != -1){
                    System.out.println("服务器获取到的内容"+new String(bt,0,len));
                    out.write(bt, 0, len);
                }
                out.close();
                in.close();
            }
            //4.释放资源
            
            serverSocket.close();
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

客户端代码

/**
 * 
 * @author Administrator
 *clientSocket客户端代码
 */
public class ClientSocket {
    
        public static void main(String[] args) {
            
            try {
                //1.创建socket客户端
                Socket socket = new Socket("127.0.0.1",8080);
                if(socket != null){
                    //连接成功
                    //2.向服务器端传输数据
                        //创建字节输出流OutputStream
                    OutputStream outputStream = socket.getOutputStream();
                        //写入内容
                    outputStream.write("你好服务器端".getBytes());
                        //关闭输出流
                    outputStream.close();
                }
                //3.关闭socket
                socket.close();
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
}