TcpUdp与Socket的学习(2)
来源:互联网 发布:java全角转半角 编辑:程序博客网 时间:2024/05/16 01:05
刚刚整理了udp的,现在整理一下tcp的
写博客的流程一直是:
(背景----->)要实现的功能----->要做的事情----->代码以及结果(----->感触)
下面要实现的功能是:实现客户端与服务端的tcp通信
要做的事情:
服务端
创建ServerSocket对象,并绑定端口<-----new ServerSocket(8090);//参数是端口号
监听连接请求,并返回套接字Socket对象<-----serverSocket.accept();//该方法返回Socket 对象
获取输入输出流的对象,发送接收数据
<-----new BufferedReader(new InputStreamReader(socket.getInputStream()));//socket是上面一步返回的对象
<-----new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
<-----readLine().toString();//利用上面获得的对象调用读取输出的方法
<-----write(string);//参数是要发送的对象
关闭套接字对象<-----close()
客户端
创建Socket对象,并绑定端口<-----new Socket("172.16.17.37", 8090);
获取输入输出流的对象,发送接收数据
<-----new BufferedReader(new InputStreamReader(socket.getInputStream()));//socket是上面一步返回的对象
<-----new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
<-----readLine().toString();//利用上面获得的对象调用读取输出的方法
<-----write(string);//参数是要发送的对象
关闭套接字对象<-----close()
代码:
下面需要注意的一点,System.getProperty("line.separator")是java的标准换行符,也就是说换成\n也是可以的,但是不加上换行符就会接收不到信息,原因就在惹readLine()这里,他必须要读取到结束符才会返回,否则一直在读取
客户端代码
try {Socket socket = new Socket("172.16.17.37", 8090);//调用套接字的方法获取输出和输入流的对象,并开始网络数据的发送和接收BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//发送和接收信息String string = "客户端-------->服务器端" + System.getProperty("line.separator");writer.write(string);writer.flush();System.out.println("发送数据是:" + string);String string2 = reader.readLine() + System.getProperty("line.separator");System.out.println("接收数据是:" + string2);//关闭套接字对象socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
服务端代码
ServerSocket serverSocket = null;try {//创建ServerSocket对象,并绑定在指定端口上serverSocket = new ServerSocket(8090);//调用accept,监听请求,如果客户端请求连接则接受,并返回socket对象Socket socket = serverSocket.accept();//调用socket类的相关方法获取输出和输入流的对象,开始网络的接收和发送BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//将读取到的数据转化为字符串,并显示出来String string = reader.readLine().toString();System.out.println("我收到的东西是:" + string);//发送字符串给客户端String string2 = "服务器端------>客户端" + System.getProperty("line.separator");writer.write(string2);writer.flush();System.out.println("发送数据是:" + string2);//关闭套接字对象socket.close();} catch (Exception e) {e.printStackTrace();}finally{if(serverSocket != null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}
结果
- TcpUdp与Socket的学习(2)
- TcpUdp与Socket的学习(1)
- socket开发调试工具TcpUdp推荐
- nio与mina学习(1) nio与socket模型的关系探究
- TCP和UDP的最完整的区别 标签: TCPUDP区别
- 编译busybox是遇到的问题--- [networking/tcpudp.o] 错误 1
- Socket网络编程学习笔记(2):面向连接的Socket
- Socket网络编程学习笔记(2):面向连接的Socket
- Socket网络编程学习笔记(2):面向连接的Socket
- Socket网络编程学习笔记(2):面向连接的Socket
- 传输层TCPUDP 详解
- unity网络编程学习(4)与java服务器的Socket通信
- Unix网络编程学习日记(五):基于epoll与管道的socket客户端
- 黑马程序员<.net学习---Socket 服务端与客户端的交互>
- Python的学习(三十) ---- socket编程
- java的socket学习
- Socket 的学习
- Python的Socket学习
- 2016年8-9月的关于信息学学习总结
- Struts基础学习一
- Android文件的10位权限
- 英语从句精简分类讲述
- 复合数据类型
- TcpUdp与Socket的学习(2)
- 剑指offer4-(LCA)Lowest Common Ancestor
- ListView详解
- jQuery实现动画循环的三种解决方案
- 华为手机USB调试搜不到设备
- 类
- RecyclerView和ListView的异同
- 2016.10.5 普及总结 暨 2016 Aug.~Sep. 总结
- 类的继承