黑马程序员技术交流社区
标题:
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