老生常谈Java网络编程TCP通信(必看篇)
Socket简介:
Socket称为“套接字”,描述IP地址和端口。在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端口上,不同的端口对应于不同的服务。Socket和ServerSocket类位于java.net包中。ServerSocket用于服务端,Socket是建立网络连接时使用的。连接成功时,应用程序两端都会产生一个Socket实例,通过操作这个实例完成所需会话。
Socket常用方法:
-intgetLocalPort()获取本地使用的端口号
-InetAddressgetLocalAddress()获取套接字绑定的本地地址
-intgetPort()获取远端使用的端口号
-InetAddress.getInetAddress()获取套接字绑定的远端地址
InetAddress常用方法:
-StringgetCanonicalHostName()获取此IP地址的完全限定域名。
-StringgetHostAddress()返回IP地址字符串
//获取本地地址和端口号: publicvoidtestSocket()throwsException{ Socketsocket=newSocket("localhost",8088); InetAddressadd=socket.getLocalAddress(); System.out.println(add.getCanonicalHostName()); System.out.println(add.getHostName()); System.out.println(add.getLocalPort()); }
//获取远端地址和端口号: publicstaticvoidtestSocket()throwsException{ Socketsocket=newSocket("localhost",8088); InetAddressinetAdd=socket.getInetAddress(); System.out.println(inetAdd.getCanonicalHostName()); System.out.println(inetAdd.getHostName()); System.out.println(socket.getLocalPort()); }
获取网络输入流和网络输出流
通过Socket获取输入流与输出流,主要使用一下两个方法
-InputStreamgetInputStream()用于返回此套接字的输入流
-OutStreamgetOutputStream()用于返回此套接字的输出流
publicstaticvoidtestSocket()throwsException{ Socketsocket=newSocket("localhost",8088); OutputStreamout=socket.getOutputStream(); OutputStreamWriterosw=newOutputStreamWriter(out,"UTF-8"); PrintWriterpw=newPrintWriter(osw,true); pw.println("输出的内容");//发送内容 InputStreamin=socket.getInputStream(); InputStreamReaderisr=newInputStreamReader(in,"UTF-8"); BufferedReaderbr=newBufferedReader(isr); br.readLine();//读取接到的内容 }
注意:当使用完Socket进行通讯完毕后,要关闭Socket以释放系统资源
-voidclose()关闭套接字,同时也代表关闭了获取的输入与输出流。
TCP与UDP的区别
TCP(TransmissionControlProtocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。聊天工具使用TCP协议
UDP(UserDataProtocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!游戏多使用UDP协议
以上这篇老生常谈Java网络编程TCP通信(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。