Java网络编程之socket使用小结

PS:本文是自己学习Java网络编程过程中记录的笔记,算是对学过的内容进行一下总结。

网络编程基础知识

URL(Uniform Resource Locater)统一资源定位符,表示网络中资源的位置。(可以是一个文件或目录,也可以是一个数据库)

URL常见格式如下:传输协议://主机名:端口号:文件名(例如——http://192.168.1.110:80/Index.html),其中参数的说明如下:

传输协议是指获取资源的方式,如http、ftp、tftp和telent等;

主机名可以是IP地址,也可以是主机域名;

端口号对应不同的网络服务(http协议默认的端口号是80);

文件名是资源文件的完整路径(相对于服务器所指定访问的默认根目录的相对路径)

关于文件路径的描述:假设某个文件的绝对路径为E:\Demo\Eclipse\NET\URL\URLdemo1\output.html,表示为"E:\\Demo\\Eclipse\\NET\\URL\\URLdemo1\\output.html",(转义字符)注意分隔符为"\\"(Windows)。注意Java所运行的平台,不同的系统(如Windows和Linux)分隔符不同,在Windows下为\,在Linux下为/。

Socket编程

Java支持基于流的通信(stream-basedcommunication)和基于包的通信(packet-basedcommunication)。基于流的通信使用TCP,基于包的通信使用UDP,java中通过创建套接字(socket)来进行网络通信。

服务器套接字(server socket)

下面的语句创建一个服务器套接字,并将它附加到一个端口上:

<span style="font-family:Courier New;font-size:14px;">ServerSocketserversocket = new ServerSocket(port);</span>

如果企图在已经使用的端口上创建服务器套接字,会导致java.net.BindException异常。

创建服务器套接字之后,服务器使用下面的语句监听连接:

<span style="font-family:Courier New;font-size:14px;">Socket socket =serversocket.accept();</span>

客户端套接字(socket)

客户端执行下面的语句,请求与服务器进行连接:

<span style="font-family:Courier New;font-size:14px;">Socketsocket = new Socket(serverName, port);</span>

上面的语句打开一个套接字,使客户端程序能够与服务器进行通信,其中serverName是服务器的主机名或IP地址。如果找不到指定的主机,Socket构造方法会抛出异常java.net.UnknownHostException。

通过套接字进行数据传输

通过调用套接字对象的 getInputStream() 和 getOutputStream() 方法,来获取输入/输出流。InputStream 流和 OutputStream 流用来读取或写入字节,可以使用DataInputStream、DataOutputStream、BufferedReader 和 PrintWriter 来包装 InputStream 和 OutputStream,以读取基本数据类型和字符串。

InetAddress类

InetAddress代表IP地址,它有两个子类:Inet4Address、Inet6Address,分别代表IPv4和IPv6地址。该类没有提供构造函数,只能通过它提供的两个静态方法来获取InetAddress实例。

<span style="font-family:Courier New;font-size:14px;">getByName(String host);//根据提供的主机名,获取对应的InetAddress实例

getByAddress(byte[] addr);//根据提供的IP地址,获取对应的InetAddress实例</span>

在服务器程序中使用 InetAddress 类来获取客户端的主机名和IP地址。在服务器程序中通过以下语句可以得到与客户端相连接的套接字的一个InetAddress实例:

<span style="font-family:Courier New;font-size:14px;">InetAddressinetAddress = socket.getInetAddress();</span>

还可以使用 InetAddress 类的静态方法 getByName() 通过主机名或IP地址创建一个 InetAddress 实例。

<span style="font-family:Courier New;font-size:14px;">InetAddressinetAddress = InetAddress.getByName(“Jack”);</span>

使用URLDecoder和URLEncoder

当URL地址里包含非西欧字符(比如中文字符)的字符串时,系统会将这些非西欧字符串转换application/x-www-form-urlencoded MIME字符串。

URLDecoder 类包含一个 decode(Strings, String enc) 静态方法,完成从 ...MIME 到普通字符串的转换。(解码)

URLEncoder 类包含一个 encode(Strings, String enc) 静态方法,完成从普通字符串到 ...MIME的转换。(编码)

MIME(MultipurposeInternet Mail Extensions)多用途互联网邮件扩展类型,是设定某种扩展名文件用哪一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java网络编程是指使用Java编程语言进行网络通信和连接的技术。在物联网中,Java网络编程可以用于实现设备之间的通信和数据传输。 Java提供了一套完整的网络编程API,包括Socket、ServerSocket和URL等类,可以方便地实现TCP/IP和UDP等协议的通信。使用这些类,我们可以创建客户端和服务器端应用程序,实现数据的发送和接收,以及连接的建立和断开。 在物联网中,Java网络编程可以用于连接和管理各种设备,包括传感器、控制器、物联网网关等。通过网络编程,设备可以相互通信,实现数据的采集、传输和处理。 例如,我们可以使用JavaSocket类创建一个服务器端应用程序,监听指定的端口,并接收来自各个设备的请求。同时,我们也可以使用JavaSocket类创建一个客户端应用程序,连接到服务器端,并发送请求或接收服务器端的响应。 此外,Java还提供了一些高级的网络编程框架和库,如Netty和Spring框架中的网络模块,可以简化网络编程的开发和管理,提高性能和可扩展性。 总结起来,Java网络编程是一种用于实现物联网设备之间通信和连接的技术。通过使用Java编程语言提供的网络编程API和框架,我们可以方便地创建客户端和服务器端应用程序,并实现设备之间的数据传输和通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [卷王指南,大学计算机专业,面临分专业,计科,软工,大数据,物联网,网络工程,该选什么?](https://blog.csdn.net/qing_gee/article/details/118141438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值