zoukankan      html  css  js  c++  java
  • 流式套接字:基于TCP协议的Socket网络编程(案例1)

    Socket:套接字

    流式套接字:基于TCP协议的Socket网络编程

    工作方式:

    1.客户端A连接到服务器;

    2.服务器建立连接并把客户端A添加到列表;

    3.客户端B、C...连接;

    4.客户端B送出消息到服务器;

    5.服务器将信息发送给客户端B、C...。

    要点:

    1.如何建立客户端与服务器之间的初始连接;

    2.如何传送信息到服务器;

    3.如何接收来自服务器的信息。

    案例:客户端向服务器发送登录请求,服务器收到后回复登录成功信息。

    服务器代码:

    package com.yh.mySocket;
    
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class LoginServer {
        public static void main(String[] args) {
            ServerSocket serversocket = null;
            Socket socket = null;
            InputStream is = null;
            OutputStream os = null;
            BufferedReader br = null;
            try {
                // 创建一个服务器Socket
                serversocket = new ServerSocket(5000);
                // 使用accept()等待用户的通信
                socket = serversocket.accept();
                // 获得输入流,获得相应的用户请求
                is = socket.getInputStream();
                br = new BufferedReader(new InputStreamReader(is));
                String info;
                while((info = br.readLine())!=null) {
                    System.out.println(info);
                }
                // 获得输出流,给客户端发送请求
                os = socket.getOutputStream();
                String reply = "登陆成功!";
                byte[] replys = reply.getBytes();
                os.write(replys);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    // 释放资源
                    os.close();
                    br.close();
                    is.close();
                    socket.close();
                    serversocket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    客户端代码:

    package com.yh.mySocket;
    
    import java.io.*;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class LoginClient {
        public static void main(String[] args) {
            Socket socket = null;
            OutputStream os = null;
            InputStream is = null;
            BufferedReader br = null;
            try {
                // 创建一个客户端Socket,参数为客户端IP和指定端口号,此处客户端和服务器在同一台电脑,所以IP地址相同
                socket = new Socket("localhost",5000);
                // 通过输出流,给服务器发送请求
                os = socket.getOutputStream();
                String info = "用户名:YeHuan; 密码:12345";
                byte[] infos = info.getBytes();
                os.write(infos);
                // 关闭输出流
                socket.shutdownOutput();
                
                // 获得输入流,接收服务器请求
                is = socket.getInputStream();
                br = new BufferedReader(new InputStreamReader(is));
                String reply;
                while((reply = br.readLine())!=null) {
                    System.out.println(reply);
                }
                
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    is.close();
                    os.close();
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    Jquery对象与DOM对象之间的转换
    关于Content-Type中application/x-www-form-urlencoded 和 multipart/form-data的区别及用法
    ${pageContext.request.contextPath} :JSP取得绝对路径方法
    servlet到底是什么?
    get和post的区别
    HTTP请求返回状态码详解
    XMLHttpRequest对象的readyState和status区别
    hdu 3594 仙人掌图
    hdu 4744 最小费用流
    hdu 4729 树链剖分
  • 原文地址:https://www.cnblogs.com/YeHuan/p/10787332.html
Copyright © 2011-2022 走看看