Java 网络编程

server/2024/10/18 13:50:14/

TCP

    TCP是面向连接的协议,即在传输数据前先发送端和接收端建立逻辑连接,然后在传输数据,它提供了两台计算机之间可靠、无差错的数据传输。

    在TCP连接中必须明确客户端和服务器端,由客户端向服务器端发送连接请求。每次连接的创建都需要经过三次握手:第一次握手,客户端向服务器端发送连接请求,等待服务器端确认;第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求;第三次握手,客户端向服务器端发送确认信息。

    因为TCP拥有面向连接的特性,所以它可以保证传输数据的安全性,是一个被广泛使用的协议。

UDP

    UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,就是当一台计算机向另一台计算机发送数据时,发送端不会确认接收端是否存在就会发出数据;同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

    由于UDP协议消耗资源小,通信效率高,UDP协议通常用于音频,视频的传输。但在传输重要数据时不建议使用UDP协议。

TCP通信

    在JDK中提供了两个用于实现TCP程序的类,一个是ServerSocket类,用于表示服务端,另一个是Socket类用于表示客户端。

ServerSocket

构造方法:

ServerSocket(int port)    以端口port创建ServerSocket对象,并等待客户端的请求。

常用方法:

Socket accept() 用于等待客户端的连接,在连接之前一直处于阻塞状态。如果有客户端连接会返回一个Socket对象。 

Socket 

构造方法:

Socket(String host,int port)  用于在客户端以指定的主机名和端口号创建一个Socket对象,并向服务器发起请求连接

常用方法:

int getPort()   用于获取Socket对象与服务器连接的端口号

void close()   用于关闭close连接,结束本次通信 


public class Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(9999);Socket socket = serverSocket.accept();System.out.println("客户端连接");InputStream in = socket.getInputStream();  //字节流OutputStream out = socket.getOutputStream();BufferedReader br = new BufferedReader(new InputStreamReader(in));String str = br.readLine();System.out.println("客户端发消息"+str);br.close();out.close();in.close();}
}
import java.io.*;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1",9999);InputStream in = socket.getInputStream();  //字节流OutputStream out = socket.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));bw.write("服务器。你好");bw.newLine();bw.flush();bw.close();out.close();in.close();}
}

 

 


http://www.ppmy.cn/server/132773.html

相关文章

【C语言教程】代码规范和文档编写

代码规范和文档编写 引言 学习C语言的进阶部分不仅仅是掌握更多的语法,而是深入了解语言的特性,提高思维的广度和深度,这对编写高效、健壮的程序至关重要。本教程旨在帮助读者实现从基础到高级的C语言编程能力转变,特别关注以下…

代码随想录打卡Day66

今天是代码随想录训练营的最后一天!!!!终于坚持下来了!!!太激动了!!!!已经开始期待开营前说的奖励是啥了啊哈哈哈哈😄 今天一共有两道…

get请求(豆瓣电影第一页爬取)

目录 (一)需要的python库 import urllib.request import urllib.parse (二)找到url和headers url headers (三)创建一个请求对象和返回一个响应对象 创建一个请求对象 返回一个响应对象 &#xff08…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十四集:制作新的场景以及制作创建切换管理系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作新的场景 1.重新翻新各种Sprite2.制作地图前期应该做的事情3.疯狂的制作地图二、制作场景切换管理系统 1.制作场景切换点TransitionPoint2.切换场景时的…

概率论基本知识

随机变量及其分布 1.定义 随机变量是定义在样本空间上的实值函数,它将样本空间中的每一个样本点映射到一个实数上。通常用大写字母(如X、Y)表示随机变量,而小写字母(如x、y)表示随机变量的取值。他有两个…

解锁机器人视觉与人工智能的潜力,从“盲人机器”改造成有视觉能力的机器人(上)

正如人类依赖眼睛和大脑来解读世界,机器人也需要自己的视觉系统来有效运作。没有视觉,机器人就如同蒙上双眼的人类,仅能执行预编程的命令,容易碰撞障碍物,并犯下代价高昂的错误。这正是机器人视觉发挥作用的地方&#…

Steinberg VST Live Pro v2.1.1 演出音频灯光控制软件

现场演出音频视频灯光控制软件 Steinberg VST Live Pro 将让现场表演更轻松。这是一款独特、稳定的软件解决方案,专为想要进行精彩表演的音乐家而设计,无论身在何处都能使用声音、灯光和视频等相关功能。VST Live附带大量虚拟乐器,音乐同步功…

深度学习示例3-卷积神经网络(猫狗大战)_数据增强

一、数据获取 数据获取地址:cats_vs_dogs_small.zip 链接: https://pan.baidu.com/s/1n3pACSk3FWCNKotqWVss6Q 提取码: sij9 数据训练存放目录- cats_vs_dogs_small- test- cat- 1500~2499jpg- dog- 1500~2499jpg- train- cat- 0~999jpg- dog- 0~999jpg- validation- cat- 100…