网络编程套接字Socket,java面试编程经典题

python网络socket基础练习 阅读详情

第二步:阻塞等待客户端的请求命令,首先要创建一个DatagramPacketde容器来接收客户端发送的命令,当没有收到客户端发送的指令的时候,使用receive方法,,会自动地进行阻塞等待,DatagramPacketde的参数需要传入byte[]和它的长度

DatagramPacket datagramPacket = new DatagramPacket(new byte[4096],4096);

datagramSocket.receive(datagramPacket);

第三步:接收客户端发送的具体指令,因为信息之间的传递是二进制,所以接收到客户端发送的消息也是二进制的,而调用new String()里面的getData()方法能够将二进制转换成字符串,也就是能看懂的文字

//接收客户端发送的命令

String requestContext = new String(requestDatagramPacket.getData());

第四步:对客户端信息的加工和处理,那么这里就直接接收到什么命令就直接返回了,这里就直接写一个方法

//客户端信息的加工和处理

private String process(String requestContext) {

return requestContext;

}

第五步:将接收到的信息返回给客户端,也就是将信息发送给客户端,那么就需要依赖DatagramPacket,而发送消息就需要目标地址的IP和端口号,所以DatagramPacket里面的参数就需要

发送信息的内容+内容长度+客户端IP+客户端的端口号

参数解释:

发送信息的内容:因为我们上面接收到的消息和加工处理过的信息已经转换成了字符串,而发送的信息需要以二进制内容发送,所以要调用getBytes()方法

内容长度:也就是你要发送内容的多少,一定要使用字节的长度,不能使用字符的长度也就是requestContext.getBytes().length而不是requestContext.length()

客户端IP:因为上面我们通过requestDatagramPacket接收到客户端的信息,那么此时我们就可以使用requestDatagramPacket.getAddress()来拿到客户端的IP

客户端端口号:和上面客户端IP一样的获取方法

//将信息返回给客户端

DatagramPacket responseDatagramPacket = new DatagramPacket(

requestContext.getBytes(),

requestContext.getBytes().length,

requestDatagramPacket.getAddress(),//客户端的IP

requestDatagramPacket.getPort());//客户端的端口号

//最后调用sent()方法,将信息发送给客户端

datagramSocket.send(requestDatagramPacket);

UDPServer(服务器端的全代码)

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.SocketException;

/**

  • UDP的服务器端,使用对象 DatagramSocket / DatagramPacket

*/

public class UDPServer {

private DatagramSocket datagramSocket = null;

public UDPServer(int port) throws SocketException {

datagramSocket = new DatagramSocket(port);

}

public void start() throws IOException {

System.out.println(“服务器正常启动了~”);

//写一个while循环,表示一直读取客户端发送的消息

while (true){

//阻塞等待客户端的请求

DatagramPacket requestDatagramPacket = new DatagramPacket(new byte[4096],4096);

datagramSocket.receive(requestDatagramPacket);

//接收客户端发送的命令

String requestContext = new String(requestDatagramPacket.getData());

//客户端信息的加工和处理

String responseContext = process(requestContext);

//将信息返回给客户端

DatagramPacket responseDatagramPacket = new DatagramPacket(

requestContext.getBytes(),

requestContext.getBytes().length,

requestDatagramPacket.getAddress(),

requestDatagramPacket.getPort());

//最后调用sent方法,将信息发送给客户端

datagramSocket.send(requestDatagramPacket);

//结果打印

System.out.printf(“客户端IP: %s,客户端端口:%d,客户端的内容:%s,服务器响应的内容:%s\n”,

requestDatagramPacket.getAddress(),

requestDatagramPacket.getPort(),

requestContext, responseContext);

}

}

//客户端信息的加工和处理

private String process(String requestContext) {

return requestContext;

}

public static void main(String[] args) throws IOException {

UDPServer udpServer = new UDPServer(9090);

udpServer.start();

}

}

执行结果

在这里插入图片描述

客户端UDPClient

客户端实现步骤:

  1. 初始化DatagramSocket

  2. 进入主循环执行相应流程

  • 2.1 先构建命令

  • 2.2 给服务器端发送命令

  • 2.3 阻塞等待服务器端相应

  • 2.4 打印服务器端返回的信息

第一步初始化DatagramSocket,但是这里和服务器端不一样,服务器端一直在等待命令。而客户端是给服务器端发送命令,所以需要传参目标地址的IP和端口号

//初始化DatagramSocket,客户端构建

private DatagramSocket datagramSocket = null;

public UDPClient() throws SocketException {

datagramSocket = new DatagramSocket();

}

第二步:构建客户端的请求命令

//构建客户端的请求命令

System.out.println(“->”);

String requestContext = scanner.nextLine();

第三步:给服务器端发送命令,同时也需要依赖DatagramPacket,并且要传入参数,内容+长度+目标IP(也就是服务器端的IP)+目标端口号(服务器端的端口号),最后一定要调用send方法

//给服务器端发送命令

DatagramPacket resquestDatagramPacket = new DatagramPacket(

requestContext.getBytes(),

requestContext.getBytes().length,

InetAddress.getByName(serverIp),serverPort);

datagramSocket.send(resquestDatagramPacket);

第四步:阻塞等待服务器端相应,同样和服务器端接收客户端时的信息一样,也要依赖DatagramPacke

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

189158235)]
[外链图片转存中…(img-xnxH2QrN-1711189158235)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-GhAIIH0U-1711189158236)]

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

[外链图片转存中…(img-KRktfCEp-1711189158236)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

Socket网络编程练习(C#) 网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接触。用视频的话讲解就是宿管大妈。 阅读详情

相关推荐

常见网络编程面试题整理

1、TCP和UDP的区别:

脚踏实地,用心编写出客户满意的代码,为公司创造出应有的价值。 3916

腾讯高级岗位面试流程,Socket网络编程,java技术经理面试题及答案

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,

2301_81694225的博客 914

Socket编程步骤(笔试题)

问:socket编程执行send之后系统进行哪种操作?答:如果采用系统是采用阻塞模式,则系统执行send之后会等待对方返回结果才执行下一步。如果是非阻塞模式则将当前线程挂起,执行系统下一个操作。问:什么是粘包?答:出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若...

qq_25815379的博客 2966

Socket练习

Socket网络编程

mnimxq的博客 199

移动通信基础(13)TDL、CDL、信道相关性

参考《U型槽无线信道多径传播特性测量与建模方法的研究》、《5G信号源中的信道模拟与仿真研究》衰落衰落理解为信号幅度在时间和频率上的不断波动,是无线信道一个重要的恶化特性。信道幅度恶化的两个主要来源分别是加性噪声和信号衰落,高斯白噪声信道模型就是典型的加性噪声,信号衰落引起的是乘性的信号扰动,与加性噪声从原理上完全不同。信道的频率选择性衰落组为无线信道的重要特征之一,是人们进行无线系统设计考虑的重要因素,决定了导频隔间的大小。...

tybAly的博客 2万+

Python实战:超分辨率图像质量评估全攻略——PSNR、SSIM、LPIPS与NIQE的代码实现与优化

本文详细介绍了在Python中实现超分辨率图像质量评估的完整方案,涵盖PSNR、SSIM、LPIPS和NIQE四大核心指标。通过模块化代码设计、多进程并行处理和GPU加速优化,帮助开发者构建高效、可扩展的评估系统,并提供了实战避坑指南与结果解读方法。

weixin_29053073的博客 475

Socket知识点总结-相关面试题(Java)

简介 分别总结基础的网络架构知识,延伸Java用Socket实现TCP、UDP编程DEMO(代码可运行) 相关面试题 面试题一 编写一个网络应用程序,有客户端与服务器端,客户端向服务器发送一个字符串,服务器收到该字符串后将其打印到命令行上,然后向客户端返回该字符串的长度,最后,客户端输出服务器端返回的该字符串的长度 下面是TCP实现

Mrkaizi的博客 1万+

GD32F4系列定时器正交译码器实战:用TIMER1读取旋转编码器信号(附完整代码)

本文详细介绍了GD32F4系列定时器正交译码器的实战应用,重点讲解如何使用TIMER1模块高效读取旋转编码器信号。内容涵盖硬件连接、定时器配置、方向判断与速度计算等关键环节,并提供了完整的代码实现和优化建议,帮助开发者快速掌握GD32微控制器在工业控制和消费电子领域的编码器接口设计。

weixin_29169505的博客 201

JAVA 网络编程

计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统。网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持。通过其提供的接口我们可以很方便地进行网络编程。网络通信协议是网络编程中的关键,通信双方达成的一种共识,当通信双方都遵守这样的约定,才能正确传输信息。

ashfiqa的博客 7597

高通跃龙QCS6490部署yolov11_obb实战:QNN SDK工具链全解析与避坑指南

本文详细解析了在高通跃龙QCS6490平台上部署yolov11_obb模型的实战过程,重点介绍了QNN SDK工具链的使用与优化技巧。从环境配置、模型转换到性能调优,提供了全面的避坑指南和DSP加速配置建议,帮助开发者高效实现旋转框检测任务在边缘设备上的部署。

weixin_29232121的博客 305

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1192

Java EE:6.网络编程套接字(第一弹):基础+Socket+UDP

Java EE:6.网络编程套接字(第一弹):基础+Socket+UDP

要努力去发光,而不是被照亮~ 3653

《PCI Express体系结构导读1》-- PCI简介

请先阅读完一遍此书再来看文章哦,这样效率更高~

HoneyIC的博客 152

【金三银四】TCP,UDP,Socket,Http网络编程面试题(2021最新版)

目录 前言 1.先看一天面试的经验: 2.什么是网络编程 3.网络编程中两个主要的问题 4.网络协议是什么 5.为什么要对网络协议分层 6.计算机网络体系结构 TCP/IP参考模型 TCP/IP四层协议(数据链路层、网络层、传输层、应用层) 1 TCP / UDP 1.1 什么是TCP/IP和UDP 1.2 TCP与UDP区别: 1.3 TCP和UDP的应用场景: 1.4 形容一下TCP和UDP 1.5 运行在TCP 或UDP的应用层协议分析。 1.5.1 什么是ARP协议

SQY0809的博客 3977

Xinference新手指南(一个命令直接安装成功)

对于新手,必须得学会使用docker部署,这是基本功!这里就不过多去介绍了,如果评论要出教程的话,以后再出了。

Ven%的博客 818

智能驾驶辅助系统(ADAS)全解析:功能详解 + 技术原理 + 实战案例

智能驾驶辅助系统(ADAS)是现代汽车技术的重要组成部分,旨在提升驾驶安全性和便利性。本文详细解析了ADAS的多个功能模块,包括自适应巡航控制(ACC)、车道偏离预警/车道保持辅助(LDW/LKA)、前向碰撞预警/自动紧急制动(FCW/AEB)、盲区检测/变道辅助(BSD/BSM)、倒车影像、自动泊车辅助(APA)、交通标志识别(TSR)、自动远光控制(AHB)、后方交叉来车预警(RCTA)和驾驶员疲劳监测。每个功能模块都基于特定的技术原理,如毫米波雷达、摄像头、传感器融合和深度学习算法,以实现对车辆周围环

weixin_43199439的博客 2102

java网络编程面试题

java网络编程面试题

Java仗剑走天涯 1万+

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

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

网络编程选择题复习

网络编程复习之选择题涉及的知识点们

m0_61667323的博客 612

廖雪峰Python教程[完整版]

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

socket编程——一个简单的例子

原文链接点击打开链接 转载自: 网络中进程之间如何通信 什么是Socket socket一词的起源 socket的基本操作 31socket函数 32bind函数 网络字节序与主机字节序 33listenconnect函数 34accept函数 35readwrite等函数 36close函数 socket中TCP的三次握手建立连接详解 socket中TCP的四次握手释放连...

Find的博客 5万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java考试大题编程模板(Socket通信与数据库编程)

Socket通信 // 服务器端 import java.io.*; import java.net.*; import java.util.*; public class MyChatServer { public static void main(String args[]) { Scanner scan = new Scanner(System.in); ServerSocket server = null; Socket socket

weixin_44272266的博客 271

java-socket-编程练习题

TCP传输练习题 最简单的tcp传输demo 客户端: public class TCPTransferClient {    public static void main(String[] args) throws IOException, IOException {   Socket s=new Socket("192.168.174.1",10086);   OutputStrea...

gwx324657的博客 1364

计算机网络习题 Socket编程

至于为什么写这个文章,只是那张图片还挺有用的,花费的时间不能白费! ①网络应用的Socket API(TCP)调用流程: 如上图所示: ①首先是服务器端调用WSAStartup,调用socket函数创建套接字,调用bind函数绑定端点地址,调用listen函数,将套接字置为监听模式,之后调用accept函数来接受客户端的一个请求。 ②而客户端也是先调用WSAStartup,调用socket函数创...

via CHEng的博客 767

Socket(网络编程)面试题

Java网络面试 http是一种无状态的协议 get提交的有大小限制,post没有 LinkedList增加和删除效率优于ArrayList Redis 可是数据持久化的,但是Memcache不可以 1、什么是TCP协议?UDP协议?区别? TCP:传输控制协议,面向连接,可靠。保证数据传输成功。 UDP:不可靠。传输速度快。占系统资源少。 2、TCP三次握手? A——》B通信请求以及序列号作为起始数据段。 B——》A收到请求,序列号作为起始数据段。 A——》B收到请求 Java网络编程 服务端套接字:

Ajekseg的博客 1047

Java:网络编程:Socket

https://blog.youkuaiyun.com/yusiguyuan/article/details/22514419 1、什么是TCP协议?UDP协议?区别? TCP:传输控制协议,面向连接,可靠。保证数据传输成功。 UDP:不可靠。传输速度快。占系统资源少。 2、TCP三次握手? A——》B  通信请求以及序列号作为起始数据段。 B——》A  收到请求,序列号作为起始数据段。 A——...

不花的花和尚的博客 409
上一篇: excel数据处理一:巧妙使用openpyxl提取、筛选数据,来看看这份超全面的《Python面试题及解析》
下一篇: OkHttpUtils - 封装了okhttp的网络框架(1),Android面试真题精选
普通网友
博客等级 码龄5年 4697粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值