黑马程序员_Java_网络编程(二)

来源:互联网 发布:mac卸载safefinder 编辑:程序博客网 时间:2024/06/05 02:50

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一.TCP基础

       1.TCP与UDP区别                      面向连接, 数据安全, 区分服务器端和客户端.       2.TCP客户端                     创建客户端Socket, 指定连接到服务器的地址和端口号, 并尝试连接                      Socket socket = new Socket("192.168.1.220", 8888);                      连接成功之后获取输入输出流                      socket.getInputStream();                      socket.getOuputStream();                      获取流之后就可以通过输入输出流发送和读取数据了, 客户端的输入流连接服务端输出流, 客户端输出流连接服务端输入流

3.TCP服务端
创建服务端ServerSocket, 需要指定端口号. 客户端连接的也就是这个端口.

                  ServerSocket serverSocket = new ServierSocket(8888);                  服务端创建之后可以获取客户端连接, 返回一个Socket对象, 这个Socket就是和客户端连接的Socket                   Socket socket = serverSocket.accept();                   服务端获取这个socket的输入输出流, 就可以和客户端发送接收数据了                    socket.getInputStream();                   socket.getOutputStream();

4.多线程服务器
服务器一般是为多个客户端同时服务的, 当每个客户端连接到服务器时, 可以开一条单独的线程处理这个连接.

5.获取ip及端口号
客户端和服务端都可以通过Socket获取ip及端口号

               socket.getInetAddress().getHostAddress();                socket.getPort();

二.telnet工具
1.使用telnet
telnet是windows系统提供的客户端工具, 指定ip地址和端口号就可以访问服务器

      2.使用方式                 telnet ip地址 端口号                 telnet 192.168.1.220 8888      3.设置回显(如果自己输入的内容看不见时设置)                     telnet                     set localecho                   在输入的时候如果看不到回显, 按 ctrl+], 回车       4.配置Path                   需要将telnet.exe所在目录配置到path环境变量中才能使用        5.telnet特点                   在telnet中输入一个字符串的时候, 逐个字节发送. 

三.文件上传
1.服务端
1 创建ServerSocket, 绑定端口
2 在循环中等待接收请求
4 接收到请求之后, 交给一条线程处理
5 获取输入输出流
6 向客户端发送欢迎语: 连接成功, 请输入上传文件路径:
10 读取文件路径, 判断是否存在
11 根据是否存在, 向客户端输出结果.
14 从socket的in流中读取数据, 写出到一个FileOutputStream中, 这个文件输出流关联到服务器上的一个文件

     2.客户端                    3 创建Socket, 指定ip地址端口号, 尝试连接                    5 获取输入输出流                    7 接收数据, 显示                    8 从键盘读取一个路径, 判断是否存在(客户端), 是否是文件夹                    9 将文件名发送至服务器(为了让服务器验证是否存在)                    12 判断服务端发送的结果, 如果服务端存在该文件那么程序结束, 如果服务端不存在该文件准备开始上传                    13 定义一个FileInputStream读取文件, 将内容写出到socket的out流中.     3.细节问题               上传结束之后服务端向客户端发送上传完毕.                 如果客户端不关闭socket, 那么服务端读取不到-1, 上传的循环无法结束.                如果客户端关闭socket, 那么服务端无法再传输数据.                那么我们就需要在不关闭socket的情况下结束while循环.                可以再客户端上传文件之前先将文件的大小传给服务器.                服务器每次循环之后判断文件大小, 如果文件大小等于客户端传过来的大小, 

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

0 0
原创粉丝点击