词典翻译

  • 服务器
    • 基本服务器
  • 客户端
  • 测试

客户端输入英文服务器返回汉语

服务器

基本服务器


import java.io.IOException;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class UdpEchoServer {// 对于一个服务器程序来说, 核心流程也是要分成两步.// 1. 进行初始化操作 (实例化 Socket 对象)// 2. 进入主循环, 接受并处理请求. (主循环就是一个 "死循环")//   a) 读取数据并解析//   b) 根据请求计算响应//   c) 把响应结果写回到客户端.private DatagramSocket socket = null;public UdpEchoServer(int port) throws SocketException {socket = new DatagramSocket(port);}public void start() throws IOException {System.out.println("服务器启动");while (true) {// a) 读取请求并解析.DatagramPacket requestPacket = new DatagramPacket(new byte[4096], 4096);socket.receive(requestPacket);String request = new String(requestPacket.getData(),0, requestPacket.getLength()).trim();// b) 根据请求计算响应String response = process(request);// c) 把响应写回给客户端, 响应数据就是 response, 需要包装成一个 Packet 对象DatagramPacket responsePacket = new DatagramPacket(response.getBytes(),response.getBytes().length, requestPacket.getSocketAddress());socket.send(responsePacket);// [这是一个锦上添花的操作] 打印一条请求日志.System.out.printf("[%s:%d] req: %s; resp: %s\n", requestPacket.getAddress().toString(),requestPacket.getPort(), request, response);}}public String process(String request) {// 由于此处是一个 echo server, 请求内容是啥, 响应内容就是啥.// 如果是一个更复杂的服务器, 此处就需要包含很多的业务逻辑来进行具体的计算.return request;}}

字典服务器继承基本服务器,并重写process方法

import java.io.IOException;
import java.net.SocketException;
import java.util.HashMap;
import java.util.Map;public class UdpDicServer extends UdpEchoServer {private Map<String,String> dict = new HashMap<>();public UdpDicServer(int port) throws SocketException {super(port);dict.put("cat","猫");dict.put("dog","狗");dict.put("bed","床");dict.put("water","水");dict.put("sun","太阳");dict.put("moon","月亮");}@Overridepublic String process(String request) {return dict.getOrDefault(request,"超出词典范围");}public static void main(String[] args) throws IOException {UdpDicServer server = new UdpDicServer(9090);server.start();}
}

客户端

客户端保持不变

import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class UdpEchoClient {// 客户端的主要流程分成四步.// 1. 从用户这里读取输入的数据.// 2. 构造请求发送给服务器// 3. 从服务器读取响应// 4. 把响应写回给客户端.private DatagramSocket socket = null;private String serverIp;private int serverPort;// 需要在启动客户端的时候来指定需要连接哪个服务器public UdpEchoClient(String serverIp, int serverPort) throws SocketException {this.serverIp = serverIp;this.serverPort = serverPort;socket = new DatagramSocket();}public void start() throws IOException {Scanner scanner = new Scanner(System.in);while (true) {// 1. 读取用户输入的数据System.out.print("-> ");String request = scanner.nextLine();if (request.equals("exit")) {break;}// 2. 构造请求发送给服务器DatagramPacket requestPacket = new DatagramPacket(request.getBytes(),request.getBytes().length, InetAddress.getByName(serverIp), serverPort);socket.send(requestPacket);// 3. 从服务器读取响应DatagramPacket responsePacket = new DatagramPacket(new byte[4096], 4096);socket.receive(responsePacket);String response = new String(responsePacket.getData(), 0, responsePacket.getLength()).trim();// 4. 显示响应数据System.out.println(response);}}public static void main(String[] args) throws IOException {UdpEchoClient client = new UdpEchoClient("127.0.0.1", 9090);//UdpEchoClient client = new UdpEchoClient("47.98.116.42", 9090);client.start();}
}

测试


网络编程——UDP协议的实践(词典翻译服务器(英译汉))相关推荐

  1. 6、linux网络编程--UDP协议编程

    一.概述: UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议.UDP 不提供可 ...

  2. python网络编程—UDP协议

    一.UDP协议特点: UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送.UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之 ...

  3. python实现调用百度词典接口实现英译汉、汉译英

    话不多说,直接上贴代码. #!/usr/bin/python3 # coding=utf-8import requests #import sys import json# query_url = & ...

  4. Java网络编程UDP协议--模拟英雄联盟游戏聊天骂人变*--优化网络环境从你我做起

    模拟英雄联盟聊天功能:实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,然后服务器端也可以输入信息,同样信息在客户端和服务端显示. 本案使用了正则表达式将接 ...

  5. 标书翻译,英译汉翻译二战纪实性资料

    近日,经过持续近一个多月,共计3轮的激烈角逐,英信翻译从众多翻译公司中脱颖而出,成功中标一个大型二战史料翻译项目.该项目共计40万单词,分为4本书,原文为英文,需要在今年年底前翻译为中文并全部交付出版 ...

  6. JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等

    [Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...

  7. (转)C#网络编程(订立协议和发送文件) - Part.4

    源码下载:http://www.tracefact.net/SourceCode/Network-Part4.rar C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用 ...

  8. windows网络编程——telnet协议

     1.windows网络编程--telnet协议 Telnet是最老的Internet应用,起源于1969年的ARPANET,名字是"电信网络协议(TelecommuicationNetwo ...

  9. c++网络编程UDP

    c++网络编程UDP 服务器端: #include<WinSock2.h> #include<iostream>#pragma comment(lib,"ws2_32 ...

最新文章

  1. AngularJS之Service(四)
  2. 第一百五十一节,封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全...
  3. python用正则表达式提取中文_用正则表达式从Python中的字符串中提取数字
  4. LC60 Permutation Sequence
  5. 巴比特观察 | NFT朋克热潮:CryptoPunks的成功可以复制吗
  6. 小程序毕设作品之微信校园洗衣小程序毕业设计成品(6)开题答辩PPT
  7. bch编码c语言有库么,BCH码的译码方法与流程
  8. 计算机自配,手把手教你选择电脑配件,自己动手配置一台低价高能DIY计算机
  9. 数字媒体技术在计算机技术中的应用,浅谈数字媒体技术的主要应用及发展趋势...
  10. Mac怎么方便看节假日安排,添加中国法定节假日安排
  11. maya2011安装方法图文详细教程及Unity下载
  12. 五行灵根 鸿蒙珠,异世鸿蒙武神
  13. Gvim开发环境配置笔记--Windows篇(转)
  14. 棋盘算法c语言程序,骑士走棋盘算法
  15. 如何在Java中实现画图(图文并茂)(内附美丽的分型图片哦)
  16. Regex.Replace( )
  17. 外包公司程序员的水平真的很垃圾吗?
  18. Code 39码详细介绍
  19. solrCloud选举leader的逻辑分析
  20. 若干年后再次的感动 --- 仙剑奇侠传

热门文章

  1. CRMEB 微信商城系统 源码下载
  2. 多媒体技术基本概念汇总
  3. mac服务器文件同步软件,[MACOS]使用fswatch和SCP配合实现自动单向实时同步文件
  4. Object和Objects
  5. 《权力的游戏》电脑高清壁纸 无水印
  6. linux下ImageMagick convert命令
  7. 时间序列的数据分析(六):指数平滑预测法
  8. 游泳过后,耳朵进水怎么办,中耳进水
  9. 【SCF CLI实践】腾讯云serverless + 企业微信群机器人,轻松解决告警通知问题
  10. 全球及中国保健品市场消费需求与投资价值评估报告2022-2028年