Java网络编程

JAVA 网络编程 文章目录1. 网络编程2.计算机网络基础知识2.1 计算机网络:2.2 网络通讯的要素2.3 IP地址2.3.1 IP地址的分配2.3.2 IP地址的分类3. 端 口4. 常用默认端口5.网络通信协议/接口6. OSI的七层模型7. TCP协议8. IP协议(Internet Protocol/因特网互联协议)是网络上的计算机进行连接的基础9. TCP/IP协议9.1 InetAddressSoc... 阅读详情

Java对于网络通讯有着非常强大的支持。不仅可以获取网络资源,传递参数到远程服务器,还可以通过Socket对象实现TCP协议,通过DatagramSocket对象实现UDP协议。同时,对于多点广播以及代理服务器也有着非常强大的支持。以下是本人在学习过程中的总结和归纳。

一、网络编程基本概念

OSI与TCP/IP体系模型

1
2

IP和端口

IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证);网络编程是和远程计算机的通信,所以必须先能定位到远程计算机;IP帮助解决此问题;一台计算机中可能有很多进程,具体和哪一个进程进行通信,这就得靠端口来识别;
IP和端口能唯一定位到需要通信的进程。这里的IP表示地址,区别于IP协议。在OSI体系还是TCP/IP体系中,IP协议位于网际层,来封装IP地址到报文中。

二、Java的基本网络支持

InetAddress

Java中的InetAddress是一个代表IP地址的对象。IP地址可以由字节数组和字符串来分别表示,InetAddress将IP地址以对象的形式进行封装,可以更方便的操作和获取其属性。InetAddress没有构造方法,可以通过两个静态方法获得它的对象。代码如下:

//根据主机名来获取对应的InetAddress实例  
InetAddress ip = InetAddress.getByName("www.oneedu.cn");  
//判断是否可达  
System.out.println("oneedu是否可达:" + ip.isReachable(2000));   
//获取该InetAddress实例的IP字符串  
System.out.println(ip.getHostAddress());  
//根据原始IP地址(字节数组形式)来获取对应的InetAddress实例  
InetAddress local = InetAddress.getByAddress(new byte[]  
{127,0,0,1});  
System.out.println("本机是否可达:" + local.isReachable(5000));   
//获取该InetAddress实例对应的全限定域名  
System.out.println(local.getCanonicalHostName()); 

URLDecoder和URLEncoder

这两个类可以别用于将application/x-www-form-urlencoded MIME类型的字符串转换为普通字符串,将普通字符串转换为这类特殊型的字符串。使用URLDecoder类的静态方法decode()用于解码,URLEncoder类的静态方法encode()用于编码。具体使用方法如下。

//将application/x-www-form-urlencoded字符串  
//转换成普通字符串  
        String keyWord = URLDecoder.decode(  
    "%E6%9D%8E%E5%88%9A+j2ee", "UTF-8");  
System.out.println(keyWord);  
//将普通字符串转换成  
//application/x-www-form-urlencoded字符串  
String urlStr = URLEncoder.encode(  
    "ROR敏捷开发最佳指南" , "GBK");  
System.out.println(urlStr); 

URL和URLConnection

URL可以被认为是指向互联网资源的“指针”,通过URL可以获得互联网资源相关信息,包括获得URL的InputStream对象获取资源的信息,以及一个到URL所引用远程对象的连接URLConnection。

URLConnection对象可以向所代表的URL发送请求和读取URL的资源。通常,创建一个和URL的连接,需要如下几个步骤:
a. 创建URL对象,并通过调用openConnection方法获得URLConnection对象;
b. 设置URLConnection参数和普通请求属性;
c. 向远程资源发送请求;
d. 远程资源变为可用,程序可以访问远程资源的头字段和通过输入流来读取远程资源返回的信息。

这里需要重点讨论一下第三步:如果只是发送GET方式请求,使用connect方法建立和远程资源的连接即可;如果是需要发送POST方式的请求,则需要获取URLConnection对象所对应的输出流来发送请求。这里需要注意的是,由于GET方法的参数传递方式是将参数显式追加在地址后面,那么在构造URL对象时的参数就应当是包含了参数的完整URL地址,而在获得了URLConnection对象之后,就直接调用connect方法即可发送请求。
而POST方法传递参数时仅仅需要页面URL,而参数通过需要通过输出流来传递。另外还需要设置头字段。以下是两种方式的代码。

//1. 向指定URL发送GET方法的请求  
String urlName = url + "?" + param;  
URL realUrl = new URL(urlName);  
//打开和URL之间的连接  
URLConnection conn = realUrl.openConnection();  
//设置通用的请求属性  
conn.setRequestProperty("accept", "*/*");   
conn.setRequestProperty("connection", "Keep-Alive");   
conn.setRequestProperty("user-agent",   
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");   
//建立实际的连接  
conn.connect();   
//2. 向指定URL发送POST方法的请求  
URL realUrl = new URL(url);  
//打开和URL之间的连接  
URLConnection conn = realUrl.openConnection();  
//设置通用的请求属性  
conn.setRequestProperty("accept", "*/*");   
conn.setRequestProperty("connection", "Keep-Alive");   
conn.setRequestProperty("user-agent",   
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");   
//发送POST请求必须设置如下两行  
conn.setDoOutput(true);  
conn.setDoInput(true);  
//获取URLConnection对象对应的输出流  
out = new PrintWriter(conn.getOutputStream());  
//发送请求参数  
out.print(param);  

另外需要注意的是,如果既需要读取又需要发送,一定要先使用输出流,再使用输入流。因为远程资源不会主动向本地发送请求,必须要先请求资源。

三、基于TCP协议的网络编程

TCP协议是一种可靠的通络协议,通信两端的Socket使得它们之间形成网络虚拟链路,两端的程序可以通过虚拟链路进行通讯。Java使用socket对象代表两端的通信端口,并通过socket产生的IO流来进行网络通信。

ServerSocket

在两个通信端没有建立虚拟链路之前,必须有一个通信实体首先主动监听来自另一端的请求。ServerSocket对象使用accept()方法用于监听来自客户端的Socket连接,如果收到一个客户端Socket的连接请求,该方法将返回一个与客户端Socket对应的Socket对象。如果没有连接,它将一直处于等待状态。通常情况下,服务器不应只接受一个客户端请求,而应该通过循环调用accept()不断接受来自客户端的所有请求。

这里需要注意的是,对于多次接收客户端数据的情况来说,一方面可以每次都在客户端建立一个新的Socket对象然后通过输入输出通讯,这样对于服务器端来说,每次循环所接收的内容也不一样,被认为是不同的客户端。另外,也可以只建立一次,然后在这个虚拟链路上通信,这样在服务器端一次循环的内容就是通信的全过程。

服务器端的示例代码:

//创建一个ServerSocket,用于监听客户端Socket的连接请求  
ServerSocket ss = new ServerSocket(30000);  
//采用循环不断接受来自客户端的请求  
while (true)  
{  
    //每当接受到客户端Socket的请求,服务器端也对应产生一个Socket  
    Socket s = ss.accept();  
    //将Socket对应的输出流包装成PrintStream  
    PrintStream ps = new PrintStream(s.getOutputStream());  
    //进行普通IO操作  
    ps.println("您好,您收到了服务器的新年祝福!");  
    //关闭输出流,关闭Socket  
    ps.close();  
    s.close();  
} 

Socket

使用Socket可以主动连接到服务器端,使用服务器的IP地址和端口号初始化之后,服务器端的accept便可以解除阻塞继续向下执行,这样就建立了一对互相连接的Socket。
客户端示例代码:

Socket socket = new Socket("127.0.0.1" , 30000);  
//将Socket对应的输入流包装成BufferedReader  
BufferedReader br = new BufferedReader(  
    new InputStreamReader(socket.getInputStream()));  
//进行普通IO操作  
String line = br.readLine();  
System.out.println("来自服务器的数据:" + line);  
//关闭输入流、socket  
br.close();  
socket.close(); 

使用多线程

在复杂的通讯中,使用多线程非常必要。对于服务器来说,它需要接收来自多个客户端的连接请求,处理多个客户端通讯需要并发执行,那么就需要对每一个传过来的Socket在不同的线程中进行处理,每条线程需要负责与一个客户端进行通信。以防止其中一个客户端的处理阻塞会影响到其他的线程。对于客户端来说,一方面要读取来自服务器端的数据,另一方面又要向服务器端输出数据,它们同样也需要在不同的线程中分别处理。
具体代码如下,服务器端:

public class MyServer  
{  
    //定义保存所有Socket的ArrayList  
    public static ArrayList<Socket> socketList = new ArrayList<Socket>();  
    public static void main(String[] args)   
        throws IOException  
    {  
        ServerSocket ss = new ServerSocket(30000);  
        while(true)  
        {  
            //此行代码会阻塞,将一直等待别人的连接  
            Socket s = ss.accept();  
            socketList.add(s);  
            //每当客户端连接后启动一条ServerThread线程为该客户端服务  
            new Thread(new ServerThread(s)).start();  
        }  
    }  
} 

客户端:

public class MyClient  
{  
    public static void main(String[] args)  
        throws IOException   
    {  
        Socket s = s = new Socket("127.0.0.1" , 30000);  
        //客户端启动ClientThread线程不断读取来自服务器的数据  
        new Thread(new ClientThread(s)).start();  
        //获取该Socket对应的输出流  
        PrintStream ps = new PrintStream(s.getOutputStream());  
        String line = null;  
        //不断读取键盘输入  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        while ((line = br.readLine()) != null)  
        {  
            //将用户的键盘输入内容写入Socket对应的输出流  
            ps.println(line);  
        }  
    }  
} 

使用协议字符

协议字符用于标识一些字段的特定功能,用于说明传输内容的特性。它可以由用户自定义。一般情况下,可以定义一个存放这些协议字符的接口。如下:

public interface YeekuProtocol  
{  
    //定义协议字符串的长度  
    int PROTOCOL_LEN = 2;  
    //下面是一些协议字符串,服务器和客户端交换的信息  
    //都应该在前、后添加这种特殊字符串。  
    String MSG_ROUND = "§γ";  
    String USER_ROUND = "∏∑";  
    String LOGIN_SUCCESS = "1";  
    String NAME_REP = "-1";  
    String PRIVATE_ROUND = "★【";  
    String SPLIT_SIGN = "※";  
} 

在字段时可以加上这些字符,如下代码:

while(true)  
{  
    String userName = JOptionPane.showInputDialog(tip + "输入用户名");  
    //将用户输入的用户名的前后增加协议字符串后发送  
    ps.println(YeekuProtocol.USER_ROUND + userName  
        + YeekuProtocol.USER_ROUND);  
    //读取服务器的响应  
    String result = brServer.readLine();  
    //如果用户重复,开始下次循环  
    if (result.equals(YeekuProtocol.NAME_REP))  
    {  
        tip = "用户名重复!请重新";  
        continue;  
    }  
    //如果服务器返回登陆成功,结束循环  
    if (result.equals(YeekuProtocol.LOGIN_SUCCESS))  
    {  
        break;  
    }  
} 

收到发送来的字段时候,也再次拆分成所需要的部分,如下代码:

if (line.startsWith(YeekuProtocol.PRIVATE_ROUND)   
    && line.endsWith(YeekuProtocol.PRIVATE_ROUND))  
{  
    //得到真实消息  
    String userAndMsg = getRealMsg(line);  
    //以SPLIT_SIGN来分割字符串,前面部分是私聊用户,后面部分是聊天信息  
    String user = userAndMsg.split(YeekuProtocol.SPLIT_SIGN)[0];  
    String msg = userAndMsg.split(YeekuProtocol.SPLIT_SIGN)[1];  
    //获取私聊用户对应的输出流,并发送私聊信息  
    Server.clients.get(user).println(  
        Server.clients.getKeyByValue(ps) + "悄悄地对你说:" + msg);  
} 

四、UDP协议的网络编程

UDP协议是一种不可靠的网络协议,它在通讯实例的两端个建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送和接受数据报的对象,Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送和接收的数据报。

使用DatagramSocket发送、接收数据

DatagramSocket本身并不负责维护状态和产生IO流。它仅仅负责接收和发送数据报。使用receive(DatagramPacket p)方法接收,使用send(DatagramPacket p)方法发送。
这里需要首先明确的是,DatagramPacket对象的构造。DatagramPacket的内部实际上采用了一个字节型数组来保存数据,它的初始化方法如下:

//接收端的DatagaramSocket内部包含一个空的数组,接收传递过来的数据报中的数组信息。可以通过DatagaramSocket对象的getData()方法返回的数组来获取其中的包含的数组。  
Private DatagaramSocket udpSocket=new DatagaramSocket(buf,buf.length);  
//发送端的DatagaramSocket内部包含一个将要传递的数组,同时需要包含目标IP和端口。如果初始化时传递的数组参数是空,可以通过调用DatagaramSocket对象的setData()方法设置内容。  
Private DatagaramSocket udpSocket=new DatagaramSocket(buf,buf.length,IP,PORT);  
udpSocket。setData(outBuf); 

作为这两个方法的参数,作用和构造不同的。作为接收方法中的参数,DatagramPacket中的数组一个空的数组,用来存放接收到的DatagramPacket对象中的数组;而作为发送方法参数,DatagramPacket本身含有了目的端的IP和端口,以及存储了要发送内容的指定了长度的字节型数组。
另外,DatagramPacket对象还提供了setData(Byte[] b)和Byte[] b= getData()方法,用于设置DatagramPacket中包含的数组内容和获得其中包含数组的内容。

使用TCP和UDP通讯的编码区别:
a. 在TCP中,目标IP和端口由Socket指定包含;UDP中,目标IP由DatagramPacket包含指定,DatagramSocket只负责发送和接受。
b.在TCP中,通讯是通过Socket获得的IO流来实现;在UDP中,则通过DatagramSocket 的 send和receive方法。

使用MulticastSocket实现多点广播

MulticastSocket是DatagramSocket的子类,可以将数据报以广播形式发送到数量不等的多个客户端。实现策略就是定义一个广播地址,使得每个MulticastSocket都加入到这个地址中。从而每次使用MulticastSocket发送数据报(包含的广播地址)时,所有加入了这个广播地址的MulticastSocket对象都可以收到信息。

MulticastSocket的初始化需要传递端口号作为参数,特别对于需要接受信息的端来说,它的端口号需要与发送端数据报中包含的端口号一致。具体代码如下:

//创建用于发送、接收数据的MulticastSocket对象  
//因为该MulticastSocket对象需要接收,所以有指定端口 
socket = new MulticastSocket(BROADCAST_PORT);  
broadcastAddress = InetAddress.getByName(BROADCAST_IP);  
//将该socket加入指定的多点广播地址 
socket.joinGroup(broadcastAddress);  
//设置本MulticastSocket发送的数据报被回送到自身 
socket.setLoopbackMode(false);  
//初始化发送用的DatagramSocket,它包含一个长度为0的字节数组 
outPacket = new DatagramPacket(new byte[0] , 0 ,  
    broadcastAddress , BROADCAST_PORT); 

总结

a. 双方初始化套接字以后,就等于建立了链接,表示双方互相可以知晓对方的状态。服务器端可以调用接收到的客户端套接字进行输入输出流操作,客户端可以调用自身内部的套接字对象进行输入输出操作。这样可以保持输入输出的流畅性。例如,客户端向服务器端发送消息时,可以隔一段的时间输入一段信息,然后服务器端使用循环不断的读取传过来的输入流。

b. 对于可能出现阻塞的方法,例如客户端进行循环不断读取来自服务器端的响应信息时,如果此时服务器端并没有向客户端进行输出,那么读取的方法将处于阻塞状态,直到收到信息为止才向下执行代码。那么对于这样容易产生阻塞的代码,就需要将它放在一个单独的线程中处理。

c. 有一些流是顺承的。例如,服务器端在收到客户端的消息以后,就将消息再通过输出流向其他所有服务器发送。那么,这个来自客户端的输入流和发向客户端的输出流就是顺接的关系,不必对它们分在两个不同的线程。

d. println()方法对应readLine()。

e. 在JFrame类中,一般不要将自己的代码写进main方法中,可以将代码写到自定义的方法中,然后在main方法中调用。

java网络编程 通信双方地址IP端口号一定的规则(即:网络通信协议。有两套参考模型)OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。 阅读详情

相关推荐

基于远程服务器 Tip_Adapter源码从零开始复现

从零一步步实现源代码的运行

zcyzcyjava的博客 1602

Java中的TCP编程与UDP编程简介

Java中的TCP编程与UDP编程简介

qq_64271154的博客 1369

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)

申请公司的苹果开发者账号和企业级的苹果开发者账号时,都会用到邓白氏编码,也就是我们申请苹果开发者账号时需要填写的D-U-N-S Number。     申请这个邓白氏编码是免费的,但是从像华夏邓白氏公司提交申请到可以申请苹果开发者账号来用这个9位的D-U-N-S Number,需要一段时间,我申请得到D-U-N-S Number,用了8个工作日(不算周末哦)

wxw2011014003的博客 9万+

Java 网络编程(TCP编程 和 UDP编程)

我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接Socket来进行分离。套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据。而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次工作。Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。

weixin_61635597的博客 1738

Chapter 5 Gate Drivers and Level Shifters

Gate driver如下图所示, 包括功率管(带保护), Gate driver, Level shifter, Gate Supply 和Dead-time control.

2304_76736886的博客 2237

QNX侧触摸屏(TP)Bringup流程与源码深度解析

QNX侧TP Bringup的核心在于构建。

QQ_778132974的博客 477

Java网络编程(TCP、UDP)

一、网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及其通信协议的管理和协助下,实现资源共享和信息传递的计算机系统 网络编程 在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换 1.2 网络编程的三要素 IP地址 想要让网络中的计算机公狗通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机。而IP地址就是这个标识号。 端口

hbdhaj的博客 636

R语言glm函数构建二分类logistic回归模型、epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值

R语言glm函数构建二分类logistic回归模型(family参数为binomial)、使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值)

statistics+insight+vista+power 1397

Java网络编程——TCP、UDP必修篇

40.网络编程 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 如何准确的定位到网络上的一台计算机 ip:192.168.16.103:端口 , 定位到具体的某个资源 连接上主机之后如何进行数据传输呢? 网络通信的要素 通信双方的地址 ip 端口号 IP分类 IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任

weixin_44064134的博客 685

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块

本文记录的是基于FasterNet的YOLOv11轻量化改进方法研究。FasterNet的网络结构借鉴 CNN 的设计理念,通过提出的PConv减少推理时的计算和内存成本,同时减少通道数并增加部分比例,降低延迟,并通过后续的PWConv来弥补特征信息可能缺失的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和六种模型,以满足不同的需求。

Limiiiing的博客 2030

[网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了逆向分析OllyDbg动态调试工具的基本用法,包括界面介绍、常用快捷键和TraceMe案例分析。这篇文章将继续详细讲解WannaCry蠕虫的传播机制,带领大家详细阅读源代码,分享WannaCry勒索病毒是如何传播感染的。作者分析该病毒一个月,一方面觉得自己技术菜,另一方面深知系统安全需要坚持,继续加油。希望文章对您有所帮助~

杨秀璋的专栏 1万+

java网络编程(TCP、UDP)

java的网络编程: TCP:TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。 UDP:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。   udp和tcp的区别: 1)套接字Socket的参数不同; (2)UDP不需要调用listen和accept; (3)UDP收发数据分别用se...

jklcc1的博客 2048

第02章:HSA-Runtime架构概览

摘要: 本章深入解析HSA Runtime的三层架构设计,包括公共API层(C语言接口)、核心实现层(C++业务逻辑)和驱动抽象层(硬件交互)。重点介绍了Runtime的核心组件(Agent、Queue、Signal、Memory)及其关系,以及初始化流程、配置选项和调试功能。通过学习,读者将掌握HSA Runtime的整体架构,为后续模块学习奠定基础。

图形/计算GPU的驱动与虚拟化技术分享园地 2928

【Java网络编程详解】

Java网络编程是开发分布式应用程序的重要技能,它通过套接字(Socket)进行数据传输,支持TCP和UDP协议。本文将介绍Java网络编程的基础知识,包括Socket、ServerSocket、TCP通信、UDP通信、常用类和示例代码。网络编程是指在计算机之间通过网络进行数据传输和通信的编程方式。Java提供了强大的java.net包,封装了底层的网络协议,简化了网络编程。:面向连接,可靠传输,保证数据按序到达,适合文件传输、Web通信等。:面向无连接,不可靠但速度快,适合视频通话、广播消息等。

武帝为此的博客 958

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java基础之Java网络编程详解

网络编程是现代软件开发中不可或缺的一部分,它通过网络实现了计算机之间的通信,使得信息交换和数据共享成为可能。在网络通信的实现过程中,语言的选择和工具的使用至关重要,而Java提供了强大的支持,使得开发者可以更便捷地构建网络应用程序。网络通信的核心是数据的发送与接收,而Java的网络编程模型为此提供了一套易用且高效的工具。无论是点对点的通信,还是基于更复杂协议的多节点交互,Java都能满足需求。在网络编程中,基础的通信模式是基于Socket的点对点连接,它可以实现客户端和服务器之间的直接通信。

道可道非常道 2067

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java语言的网络编程

Java网络编程是一个庞大而复杂的领域,从基本的Socket编程到高级的HTTP处理,Java提供了丰富的工具和类库供开发者使用。了解并掌握Java网络编程,可以帮助开发者构建可靠、高效的网络应用。随着技术的不断发展,网络编程的方法和工具也在不断进步,开发者应保持学习的热情与敏锐的观察力,跟上时代的步伐。希望通过本文的讲解,能帮助您对Java网络编程有更深的理解和认识。无论是构建简单的客户端-服务器模型,还是开发复杂的Web应用,Java都能提供强大的支持。

xiaocaibao777的博客 1218

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java—— 网络编程

什么是网络编程 常见软件架构 网络编程三要素:IP:InetAddress。端口号。协议:UDP协议,TCP协议

zjy_ccccc的博客 1254

【Java 基础】Java 网络编程

Java的网络编程是指使用Java语言进行网络通信的编程技术。在Java中,可以使用Socket和ServerSocket类来实现基于TCP协议的网络通信,也可以使用DatagramSocket和DatagramPacket类来实现基于UDP协议的网络通信。

激流丶的博客 1890

十二、Java网络编程

文章目录十二、Java网络编程1.网络编程入门1.1 网络编程概述【理解】1.2 网络编程三要素【理解】1.3 IP地址【理解】1.4InetAddress【应用】1.5端口和协议【理解】2.UDP通信程序2.1 UDP发送数据【应用】2.2UDP接收数据【应用】2.3UDP通信程序练习【应用】3.TCP通信程序3.1TCP发送数据【应用】3.2TCP接收数据【应用】3.3TCP通信程序练习【应用】3.4TCP通信程序练习【应用】3.5TCP通信程序练习【应用】3.6TCP通信程序练习【应用】3.7TCP通

汪随安的博客 2917

12 java网络编程

网络编程章节,主要是把IO流的知识使用在网络上,用于网络传输。 网络传输其实也是一种IO流的方式。

qq_34106499的博客 415
上一篇: Java反射
下一篇: Junit单元测试入门与整理
单骑走天下
博客等级 码龄15年 9粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值