Socket编程(二)---TCP简单实例
来源:互联网 发布:休闲鞋女淘宝 编辑:程序博客网 时间:2024/05/22 03:56
从上篇文章我们已经对Socket有了初步的认识,现在我们就通过一个例子来实现。
1.服务端
通信,首先需要的就是服务端,如果没有服务端,我们和谁通信?通过以下代码我们来创建一个服务端
ServerSocket server = null; System.out.println("应用启动....."); try { server = new ServerSocket(7456);//绑定本地的端口号 while (true) {//循环,可以多次建立连接 Socket connection = null; try { // 接收一个连接,在没有客户端访问的时候,accept会一直阻塞 connection = server.accept(); // 获取连接的客户端的地址 System.out.println("一个连接建立" + connection.getInetAddress()); // 从连接中获取输出流 Writer out = new OutputStreamWriter(connection.getOutputStream()); Date date = new Date(); out.write(date.toString() + "\r\n"); // 输出流都会有一个缓冲区,比如有一个1024字节的缓冲区 // 如果缓冲区中的数据量不足1024,那么就会等待,而不会将数据发送给客户端 // 使用flush()则将缓冲区中的数据强制发送 out.flush(); connection.close(); } finally { // 必须手动关闭掉 if (connection != null) connection.close(); } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (server != null) server.close(); } catch (IOException e) { e.printStackTrace(); } }
2.客户端
Socket socket = null; try { // 连接地址和端口号,地址用于找到主机,端口号用于找到对应应用 socket = new Socket("localhost", 7456); InputStreamReader reader = new InputStreamReader(socket.getInputStream()); int c; while ((c = reader.read()) != -1) { System.out.print((char) c); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (socket != null) socket.close(); } catch (IOException e) { e.printStackTrace(); } }
3.连接和使用
首先运行服务端代码,效果如下:
应用启动.....
再启动客户端,服务端控制台如下:
应用启动.....一个连接建立/127.0.0.1
回到客户端控制台,内容如下:
Fri May 20 14:41:31 CST 2016
源码位置:https://github.com/oDevilo/Java-Network
1 0
- Socket编程(二)---TCP简单实例
- vc socket tcp编程的简单实例
- Tcp Socket编程实例
- socket编程实例TCP
- 简单的基于Socket的TCP编程实例
- Linux C Socket编程原理及tcp, udp简单实例
- Socket TCP【简单聊天实例】
- windows Socket + tcp 简单实例
- Socket编程简单实例
- 简单socket编程实例
- Socket编程简单实例
- windows socket 编程实例--TCP
- Java Socket--TCP编程实例
- 网络编程C#篇(二):Socket简单实例
- Linux Socket编程简单实例
- C# Socket 编程简单实例
- Java Socket 简单编程实例
- socket编程:简单TCP服务器/客户端编程
- 配置as
- vaadin应用程序
- jquery下拉选择生日
- java容器源码解析
- 一般处理程序(后缀为.ashx)里面使用Session,直接使用Session会报实例错误
- Socket编程(二)---TCP简单实例
- 电视行业竞争日趋白热化,差异化或成竞争焦点
- 最长递增子序列问题[网络流24题之6]
- js判断密码强度
- SwitchButton 开关按钮 的多种实现方式 (附源码DEMO)
- Omnibus Gitlab + Runner 配置
- 手把手教你搭建和配置Jenkins环境
- Unity 基础 - 预设
- apk文件反编译