JAVA网络编程TCP通信

Posted H.U.C-王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA网络编程TCP通信相关的知识,希望对你有一定的参考价值。

Socket简介:

Socket称为“套接字”,描述IP地址和端口。在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端口上,不同的端口对应于不同的服务。Socket和ServerSocket类位于java.net包中。ServerSocket用于服务端,Socket是建立网络连接时使用的。连接成功时,应用程序两端都会产生一个Socket实例,通过操作这个实例完成所需会话。

Socket常用方法:

-int getLocalPort() 获取本地使用的端口号

-InetAddress getLocalAddress() 获取套接字绑定的本地地址

-int getPort() 获取远端使用的端口号

-InetAddress.getInetAddress() 获取套接字绑定的远端地址

InetAddress常用方法:

-String getCanonicalHostName() 获取此IP地址的完全限定域名。

-String getHostAddress() 返回IP地址字符串

1 //获取本地地址和端口号:
2   public void testSocket() throws Exception{
3       Socket socket=new Socket("localhost",8088);
4       InetAddress add=socket.getLocalAddress();
5       System.out.println(add.getCanonicalHostName());
6       System.out.println(add.getHostName());
7       System.out.println(add.getLocalPort());
8   }
1 //获取远端地址和端口号:
2     public static void testSocket() throws Exception{
3         Socket socket=new Socket("localhost",8088);
4         InetAddress inetAdd=socket.getInetAddress();
5         System.out.println(inetAdd.getCanonicalHostName());
6         System.out.println(inetAdd.getHostName());
7         System.out.println(socket.getLocalPort());
8     }

获取网络输入流和网络输出流

通过Socket获取输入流与输出流,主要使用一下两个方法

-InputStream getInputStream() 用于返回此套接字的输入流

-OutStream getOutputStream() 用于返回此套接字的输出流

public static void testSocket() throws Exception {
        Socket socket = new Socket("localhost", 8088);
        OutputStream out = socket.getOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");
        PrintWriter pw = new PrintWriter(osw, true);
        pw.println("输出的内容");//发送内容
        InputStream in=socket.getInputStream();
        InputStreamReader isr=new InputStreamReader(in, "UTF-8");
        BufferedReader br=new BufferedReader(isr);
        br.readLine();//读取接到的内容
 }

注意:当使用完Socket进行通讯完毕后,要关闭Socket以释放系统资源

-void close() 关闭套接字,同时也代表关闭了获取的输入与输出流。

TCP与UDP的区别

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。聊天工具使用TCP协议

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! 游戏多使用UDP协议

以上是关于JAVA网络编程TCP通信的主要内容,如果未能解决你的问题,请参考以下文章

Java网络编程实现简单通信含代码(狂神说)

Java-Web学习-Java基础-网络编程(TCP和UDP)附TCP实现通信

Java回顾之网络通信

阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_3_TCP通信的客户端代码实现

Python 之 Socket编程(TCP/UDP)

java网络多线程专题