当前位置: 首页 > news >正文

全国建设工程信息网站网站备案在哪里审批

全国建设工程信息网站,网站备案在哪里审批,建设高端网站公司的目的,字体设计教程网站文章目录一、DatagramSocket API构造方法常用方法二、DatagramPacket API构造方法常用方法E1:回显服务器的实现E2:带有业务逻辑的请求发送一、DatagramSocket API 在操作系统中#xff0c;把socket对象当成了一个文件处理。等价于是文件描述符表上的一项。 普通的文件#xf… 文章目录一、DatagramSocket API构造方法常用方法二、DatagramPacket API构造方法常用方法E1:回显服务器的实现E2:带有业务逻辑的请求发送一、DatagramSocket API 在操作系统中把socket对象当成了一个文件处理。等价于是文件描述符表上的一项。 普通的文件对应的硬件设备是硬盘而socket文件对应的硬件设备是网卡。 【网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。】 这也体现了计算机资源一切皆文件的理念。 如果要和多个不同的主机进行通信就需要创建多个socket对象。 构造方法 方法签名说明DatagramSocket()创建一个UDP数据报套接字的Socket绑定到本机任意一个随机端口 一般用于客户端DatagramSocket(int port)创建一个UDP数据报套接字的Socket绑定到本机指定的端口一般用 于服务端 port是一个端口号绑定了接收方进程。 那不指定端口号的构造方法呢此时系统会自动分配一个空闲的端口。 本质上不是进程和端口号建立了联系而是进程中的socket对象和端口建立了联系。 常用方法 方法签名方法说明void receieveDatagramSocket p从当前套接字对象接受数据报。如果没有接收到会阻塞等待【输出形参数】void send(DatagramSocket p)从当前套接字对象发送数据包。不会阻塞等待直接发送void close()关闭这个数据报套接字对象【类比文件对象关闭释放资源】 二、DatagramPacket API 它是表示udp中传输的一个报文构造这个对象可以指定一些具体的数据进去。 构造方法 方法签名说明DatagramPacket(byte[] buf,int length)构造接收数据报的对象接受的数据保存在字节数组buf中接收指定长度lenDatagramPacket(byte[] buf,int offset,int length,SocketAddress address)构造一个DatagramPacket以用来发送数据报的对象发送的数据为字节数组(buf里)从0到指定长度length。address指定目的主机ip和端口号 【SocketAddress这个类表示ip端口号】 常用方法 方法签名说明InetAddress getAddress()从接收的数据报中获取发送端主机IP地址或从发送的数据报中获取 接收端主机IP地址int getPort()从接收的数据报中获取发送端主机的端口号或从发送的数据报中取接收端主机端口号byte[] getData()获取数据报中的数据可以用一个线程receive把数据放进阻塞队列中另一个线程进行处理请求并响应。 手定指定并不一定数组全部用但是指定长度全部用留微操空间。不过现在用的比较少了。 E1:回显服务器的实现 普通服务器和回响服务器的区别 普通服务器根据收到的请求个性化的返回对应的响应。 回显服务器省略了其中的根据请求计算响应请求是什么就返回什么。 后者代码里边没有实际业务。而实际上最关键的是根据请求计算响应的环节。 注意事项 端口号的设置服务器可以显示指定是因为是程序员手中的是可控的但是客户端一般是用户的是不可控的E2:请求响应个别参数的指定①respose.length_字符的个数respose.getBytes().length是字节的个数②offset是一个偏移量相当于起始位置 UDP回响服务器代码 public class Code01UDPEchoServer {private DatagramSocket socketnull;//OS提供操作网卡的socket对象//服务器一定要关联上一个端口号不能让它随机分配方便端口号定位public Code01UDPEchoServer(int port) throws SocketException {socketnew DatagramSocket(port);}public void start() throws IOException {System.out.println(服务器启动);// //存取数据 // byte[] bytesnew byte[4096];//2^12 // 这里是直接每次new 了 // int length0;//因为要服务很多客户端所以服务器需要一直在就绪状态while (true) {//1.获取客户端发送过来的请求// receive是一个输出型参数所以我们需要先构造一个DatagramPacket的对象DatagramPacket requestPacket new DatagramPacket(new byte[4096], 4096);//类似给人家一个空白的纸条两个人说悄悄话socket.receive(requestPacket);//由于这里是一个特殊对象所以一般把它拿出来做成字符串//offset是一个偏移量//这里指定范围节省构造字符串的空间[指构造有效范围的]String request new String(requestPacket.getData(), 0, requestPacket.getLength());//2.根据请求计算响应请求与响应相同String resposeprocess(request);//3.把响应写回客户端//将响应字符串转成字节数组//respose.length_字符的个数//respose.getBytes().length是字节的个数//怎么确定响应返回端口——通过getSocketAddressDatagramPacket answerPacketnew DatagramPacket(respose.getBytes(),respose.getBytes().length,requestPacket.getSocketAddress());socket.send(answerPacket);//4.打印本次请求的处理中间结果System.out.printf([%s:%d] req:%s\n,requestPacket.getAddress().toString(),requestPacket.getPort(),request,respose);//获得ip和端口}}//根据请求计算响应public String process(String request){return request;}public static void main(String[] args) throws IOException {Code01UDPEchoServer udpEchoServernew Code01UDPEchoServer(1200);udpEchoServer.start();} }UDP回响客户端 public class Code02UDPEchoClient {private DatagramSocket socketnull;public Code02UDPEchoClient(String serverip, int serverport) throws SocketException {socketnew DatagramSocket();//不需要显示绑定端口os随机分配serverIpserverip;serverPortserverport;}private String serverIpnull;private Integer serverPortnull;//一次通信需要有两个ip两个端口客户端的ip是环回ip端口号是操作系统随机分配的服务器的ip和端口号需要声明public void start() throws IOException {System.out.println(客户端启动!);Scanner scanner new Scanner(System.in);while (true) {// 1. 从控制台读取要发送的数据System.out.print( );String request scanner.next();if (request.equals(exit)) {System.out.println(bye);break;}// 2. 构造成 UDP 请求, 并发送// 构造这个 Packet 的时候, 需要把 serverIp 和 port 都传入过来. 但是此处 IP 地址需要填写的是一个 32位的整数形式.// 这里的 IP 地址是一个字符串. 需要使用 InetAddress.getByName 来进行一个转换.端口号一直都是integer没关系DatagramPacket requestPacket new DatagramPacket(request.getBytes(), request.getBytes().length, InetAddress.getByName(serverIp), serverPort);socket.send(requestPacket);// 3. 读取服务器的 UDP 响应, 并解析DatagramPacket responsePacket new DatagramPacket(new byte[4096], 4096);socket.receive(responsePacket);String response new String(responsePacket.getData(), 0, responsePacket.getLength());// 4. 把解析好的结果显示出来.System.out.println(response);}}public static void main(String[] args) throws IOException {Code02UDPEchoClient client new Code02UDPEchoClient(127.0.0.1, 1200);client.start();} }默认情况下是只允许运行一个客户端但是我们可以通过设置同时运行两个客户端的 E2:带有业务逻辑的请求发送 思路复用之前的echoServer的代码只需要重写process的逻辑即修改业务内容。 public class Code03_UdpDictServer extends Code01UDPEchoServer {private MapString,String mapnew HashMap();public Code03_UdpDictServer(int port) throws SocketException {super(port);map.put(dog,小狗);map.put(cat,小猫);map.put(pig,小猪);}public String process(String request){return map.getOrDefault(request,尚未查出结果);}public static void main(String[] args) throws IOException {Code03_UdpDictServer udpDictServernew Code03_UdpDictServer(1200);udpDictServer.start();} }当然除了使用map我们还可以把词存在硬盘上通过文件io操作直接读到硬盘上这里就需要修改udpechoserver的start方法了。
http://www.laogonggong.com/news/111475.html

相关文章:

  • 中国人做跨电商有什么网站玄圭做网站怎么样
  • 国外 设计公司手机网站企业app定制
  • 网站建设三剑客建设人才网站的目的
  • 怎么把自己做的网站放到网上二级分销被国家叫停
  • 大兴网站建设价格做app的网站
  • 电商网站建设实验心得温州网站建设
  • 用dw做旅游的网站的设计缙云网站建设
  • 万网站底部添加备案号大连制作网站多少钱
  • 高淳哪家做网站不错临淄信息网123
  • apmserv网站模板网站cms下载
  • wordpress本地站点地址如何配置广州外贸公司联系方式
  • 查询公司的网站备案自己做副业可以抢哪个网站
  • 公益网站建设重庆网站建设哪家公司好
  • 网站外包的恶意刷流量网站运营怎样做
  • 网站空间商怎么做重庆制作网站怎么选
  • 郑州pc网站建设律师事务所东莞网站建设
  • 淘宝的网站建设电商财务内账做账流程
  • 对ui设计的理解和认识哈尔滨优化seo外包公司
  • 药品网站建设上海临港
  • 免费的logo网站wordpress 资料导出
  • 平台网站开发多少钱网络优化工程师主要负责什么工作
  • 北京网站建设电话无锡网络公司服务
  • 东城建设网站仙女棒在线设计平台
  • 建设网站职业证书查询西安优化网站推广
  • 大连网站哪家做的好北京网站的网站建设公司
  • 网站开发服务费入什么科目宁波网站建设公司哪有
  • 那个相亲网站做的比较好大型网站建设兴田德润专业
  • wordpress搭建站点深圳那家做APP网站的最好
  • 伊春网络建站公司浅谈电子商务网站建设与管理论文
  • 网站建设方案书 本案如何推广视频号