黑马程序员技术交流社区

标题: Socket忘了好多还的在记一下 [打印本页]

作者: dmyz3214382    时间: 2016-9-21 00:21
标题: Socket忘了好多还的在记一下
Socket谁在总结总结
作者: zjy9399    时间: 2016-9-22 02:13
本帖最后由 zjy9399 于 2016-9-22 02:21 编辑

我自己写的,不知道你能不能看得懂了。。。
day03网络编程
1.        UDP
--发送端
                1.创建DatagramSocket对象
                2.创建带内容数组,并将数组配置到DatagramPacket中进行打包,包括数组,与所要发送的ip,端口号
                3.DatagramSocket对象进行封装,封装内容有带内容的数组,指定发送的ip地址InetAddress.getByName,与端口号
                4.发送封装好的数据(DatagramSocket.send(封装对象))
                4.释放资源
--接收端:
                1.创建DatagramSocket对象,并指定接收端的端口号
                2.建立一个指定长度的空数组,然后把数组,数组长度封装到DatagramPacket对象中
                3.接收数据存储到DatagramPacket对象中(DatagramSocket对象.receive(封装对象))
                4.获取信息:谁的ip(ip’s instance,String ip)?,发来的什么东西(byte[] dp.getData())?发来的长度(int dp.getLength())?发来的具体内容?(String new String(数组名,0,发来的长度))
                5.释放资源.
2.        TCP(发送数据)(服务端)
--服务器
               1.创建ServerSocket对象,指定服务器端口
               2.服务器开启,等待客户端连接,客户端连接后,服务器可获取客户端的Socket(Socket ServerSocket对象.accept())
               3.获取客户端的输出流OutputStream socket.getOutputStream(),创建一个带内容数组通过输出流进行传输给客户端,格式:        out.write(byteName,0,byteName.length);
               4.关闭资源
--客户端
               1.创建Socket对象,指定要发送的服务器IP,端口
               2.创建输入流,通过读取将数组存到数组中,然后读取数组个数,再通过new String(byteName,0,个数)进行读取服务器信息(InputStream client.getInputStream();)
               3.释放资源
--上传其他文件
    服务器:
              1.创建ServerSocket对象(指定服务器端口号),开启server,等待client连接Socket server.accept();
              2.获取client的输入流,InputStream client.getInputStream(),读取client文件,在这个过程中将还需要创建服务器输出流,然后通过client的输入流将      文件写入服务器指定的地址。
              3.server通过输出流反馈信息给client
              4.释放资源
     客户端:
              1.创建Socket对象,指定要发送的服务器的ip,端口号
              2.创建client输出流,然后通过文件输入流读取要上传的文件,然后创建数组,将读取的数据存储到数组中,再将数组的内容写入到client输出流中,当写入完毕时,关闭输出流(client.shutdownOutput();)
              3.创建clientl输入流,读取server发送过来的信息
              4.关闭资源
--多线程上传(只需要server进行设置)
              1.创建ServerSocket对象
              2.开启server,等待多个client连接
                 a.(无限循环)
                 b.final Socket server.accept();
                  c.new Thread(){}.start,
                      c.1在线程中创建一个run()方法,
                      c.2方法中显示哪个client连接了server,
                      c.3创建文件输出流,存储的名字想办法改变下,防止client发送过来的文件被其他client覆盖
                      c.4通过client的输出流,将上传信息反馈给client
                      c.5释放资源
              3.在循环外关闭server流,但一般不关闭(只作个提示)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2