老生常谈Java网络编程TCP通信(必看篇)

 更新时间:2017年05月29日 07:31:35   投稿:jingxian  
下面小编就为大家带来一篇老生常谈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地址字符串

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

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

通过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编码IDEA主题推荐

    java编码IDEA主题推荐

    在这篇文章中,我精选了几个比较是和 Java 编码的 IDEA 主题供小伙伴们选择。另外,我自己用的是 One Dark theme 这款,有需要的朋友可以借鉴参考下,希望大家喜欢
    2022-01-01
  • 全面解析JTA 深度历险

    全面解析JTA 深度历险

    本文介绍了利用 JTA 深度历险的相关内容,充分举例说明JTA的原理和事务处理等相关内容,十分详细,需要的朋友可以参考下。
    2017-09-09
  • Java使用sftp定时下载文件的示例代码

    Java使用sftp定时下载文件的示例代码

    SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。接下来通过本文给大家介绍了Java使用sftp定时下载文件的示例代码,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-05-05
  • Java FTPClient实现文件上传下载

    Java FTPClient实现文件上传下载

    这篇文章主要为大家详细介绍了Java FTPClient实现文件上传下载的相关资料,需要的朋友可以参考下
    2016-04-04
  • Java中LinkedHashSet、LinkedHashMap源码详解

    Java中LinkedHashSet、LinkedHashMap源码详解

    这篇文章主要介绍了Java中LinkedHashSet、LinkedHashMap源码详解,LinkedHashMap是一个以双向链表的方式将Entry节点链接起来的HashMap子类,它在HashMap的基础上实现了更多的功能,具有顺序存储和遍历的特性,需要的朋友可以参考下
    2023-09-09
  • 教你怎么用Java数组和链表实现栈

    教你怎么用Java数组和链表实现栈

    本篇文章为大家详细介绍了怎么用Java数组和链表实现栈,文中有非常详细的代码示例及注释,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Java随机生成字符串的四种方式例子

    Java随机生成字符串的四种方式例子

    这篇文章主要给大家介绍了关于Java随机生成字符串的四种方式,随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串、数字,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-10-10
  • Log4j2 重大漏洞编译好的log4j-2.15.0.jar包下载(替换过程)

    Log4j2 重大漏洞编译好的log4j-2.15.0.jar包下载(替换过程)

    Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,由于 Log4j 的广泛使用,该漏洞一旦被攻击者利用会造成严重危害,下面小编给大家带来了Log4j2 重大漏洞编译好的log4j-2.15.0.jar包下载,感兴趣的朋友一起看看吧
    2021-12-12
  • JVM致命错误日志详解(最新推荐)

    JVM致命错误日志详解(最新推荐)

    这篇文章主要介绍了JVM致命错误日志详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 关于@Value取值为NULL的解决方案

    关于@Value取值为NULL的解决方案

    这篇文章主要介绍了关于@Value取值为NULL的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论