TCP Socket
来源:互联网 发布:网络安全员日常工作 编辑:程序博客网 时间:2024/05/23 19:28
1 .介绍TCP Socket
1) 两个Java应用程序可通过一个双向的网络连接实现数据交换,这个双向链路一端称为一个Socket。
2) Socket通常用来实现client-server连接
3) java.net包中定义的两个Socket和ServerDSocket,分别用来实现双向连接的client和server端
4) 建立连接时所需要的寻址信息为远程计算机的IP地址和端口(Port number)
2. TCP Socket通信模型
3. TCP Socket例子
1) 首先,我们创建一个TestServerScoket.java的类,这个类是服务器端的Socket.在这个Socket中,我们需要指定服务器对外提供的端口,这个端口会时刻在监听着是否有客户端连接上。同时,当服务端接收到客户端的请求后,需要给客户端一个响应,那就是调用Socket的accept()方法。当然,服务端要获取客户端的请求信息或发给客户端的信息,分别使用Socket提供的getInputStrean()和getOutInputStream()方法。
package com.owen.socket;import java.io.*;import java.net.*;/** * Socket服务端 * @author OwenWilliam 2016-7-24 * @since * @version v1.0.0 * */public class TestSocketServer{public static void main(String[] args){//输出流InputStream in = null;//输出流OutputStream out = null;try{//服务端提供的这个端口,给多个用户使用,所以客户端要想连接到这个服务,那么就要使用这个端口ServerSocket ss = new ServerSocket(6666);//等待客户端连接Socket socket = ss.accept();in = socket.getInputStream();out = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(out);DataInputStream dis = new DataInputStream(in);String s = null;//输入的字节按UTF编码if ((s = dis.readUTF()) != null){System.out.println(s);//输出客户端的请求地址System.out.println("from: " + socket.getInetAddress());//这里打印出来的是客户端的端口,这个端口客户端随机生成的System.out.println("Port: " + socket.getPort());}//向客户端以信息dos.writeUTF("hi,hello");dis.close();dos.close();socket.close();} catch (IOException e){e.printStackTrace();}}}
2) 其次,我们需要创建一个客户端的类TestSocketClient.java。在这个类里,我们需要指定连接哪个服务器,所以我们需要填写需要连接那个服务器的端口,还有就是本机的IP地址。当然服务端要连接我们客户端,我们客户端也需要提供端口,不过不需要我去定义,因为我们的电脑会自动生成端口,提供给服务端。
package com.owen.socket;import java.io.*;import java.net.*;/** * Socket的客户端 * @author OwenWilliam 2016-7-24 * @since * @version v1.0.0 * */public class TestSocketClient{public static void main(String[] args){//输入流InputStream is = null;//输出流OutputStream os = null;try{//指定请求的地址和端口号,这里的端口号是服务端提供的,作用是客户端与服务端连接//而对于客户端的端口,是本机自动生成的,服务端访问客户端的时候,就是用这个自动生成的。Socket socket = new Socket("localhost",6666);is = socket.getInputStream();os = socket.getOutputStream();DataInputStream dis = new DataInputStream(is);DataOutputStream dos = new DataOutputStream(os);//客户端请求服务端时的输出信息dos.writeUTF("hey");String s = null;//输入的字节按UTF编码if ((s = dis.readUTF()) != null ){System.out.println(s);dos.close();dis.close();socket.close();}} catch (IOException e){e.printStackTrace();}}}
3) 执行结果。
Client端:
服务端:
0 0
- TCP socket
- socket tcp
- socket TCP
- TCP Socket
- socket TCP
- TCP Socket
- TCP-socket
- TCP socket
- tcp socket
- TCP SOCKET
- socket/tcp
- tcp socket
- TCP Socket
- TCP socket
- socket(TCP)
- Socket TCP
- TCP Socket
- socket-tcp
- 167.Which three descriptions are correct about the effects of the TRUNCATE command on a table? (Choo
- 块级元素与内联元素的区别
- 隐藏tabwidgt 用radiogroup来实现tab的切换
- JAVA Arrays.binarySearch
- CVS SVN Git
- TCP Socket
- LSTM代码初解析,Torch平台
- struts的logic标签库
- android 仿花椒直播中星星从底部往上移动
- Java通过while循环实现输入异常重新输入功能
- hibernate 多对一注解
- windows下如何下载并安装Python 3.5.1
- PHP中如何使用socket进行通信?
- 标签的使用(四):表单标签的使用汇总