「javaudp试题」javaudp通信
本篇文章给大家谈谈javaudp试题,以及javaudp通信对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA UDP聊天程序问题 给100分!
- 2、关于java中UDP的问题
- 3、急!!求一套Java试题答案
- 4、java编程 利用UDP方式,客户端向服务器发送三边值,服务器,根据三边值计算三角形面积返回客户端
- 5、JAVA网络编程基础试题!300分!请一定要帮我做一下,两个解答题。一个编程题,重点是编程题,谢谢了!!
JAVA UDP聊天程序问题 给100分!
public void run() /* 用于被调用的接口run方法 */
{
while (true)
{
try
{
byte[] buf = new byte[1024];/* 接收端程序,设置BUF数组长度为1024位 */
DatagramPacket dp = new DatagramPacket(buf, buf.length);/* 创建接收数据报的实例 */
ds.receive(dp);
lst.add("他说:" + new String(buf), 0);
} catch (IOException ex)
{
}
}
}
======================
线程的run方法改成上面这样就可以了,原因是因为接收端每次循环都是使用的同一个buf,而buf没有清空,所以导致每次接收都只更新前面一小段信息,后面的信息没有改变。
关于java中UDP的问题
你没有贴出代码,我估计是你使用固定长度取的缓冲区的数据
你可以参考下面的代码改一下试试
public class Server
{
static final int size = 10240;
static String usrDir = System.getProperty("user.dir");
static String DiskInfoXML = usrDir + "disk_info.xml";
public static void main(String argv[])
{
DatagramSocket sd = null;
DatagramPacket packet = null;
String diskRequest;
try
{
sd = new DatagramSocket(7777); // 建立socket连接
System.out.println("Server Started ...");
while(true) // 一直监听
{
byte[] buffer = new byte[size];
packet = new DatagramPacket(buffer, size);
sd.receive(packet);
byte[] data = packet.getData();
int port = packet.getPort();
int len = packet.getLength();
InetAddress address = packet.getAddress();
diskRequest = new String(buffer); // 打印获取内容
System.out.println("diskRequest = \n" + diskRequest);
FileOutputStream fout = new FileOutputStream(DiskInfoXML);
fout.write(buffer, 0, len); // 写进文件
fout.close();
System.out.println(len + " bytes received");
}
}
catch (SocketException e)
{
System.out.println(e.toString());
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
急!!求一套Java试题答案
单选:
1.D 2.B 3.B 4.B 5.D 6.B 7.D 8.A
多选:
1.BC 2.D(B肯定不对) 3.ABCD 4.BCDE;
判断对错:
1.对 2.对 3.对 4.对 5.对 6.错 7.错 8.错 9.错
java编程 利用UDP方式,客户端向服务器发送三边值,服务器,根据三边值计算三角形面积返回客户端
创建两个类 分别添加main方法 一个作为server类一个作为client类
客户端先发送再接收 服务器端先接收再发送
下面给你一个server和client的例子 你在基础上改一下就行了
client发送的时候发送三边值 server接收后 写一个计算三角形面积的函数 把接收到的三边值传入函数计算出结果作为数据返回到client端
/**
*UDPServer
*/
import java.io.*;
import java.net.*;
class UDPServer{
public static void main(String[] args)throws IOException{
DatagramSocket server = new DatagramSocket(5050);
byte[] recvBuf = new byte[100];
DatagramPacket recvPacket
= new DatagramPacket(recvBuf , recvBuf.length);
server.receive(recvPacket);
String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength());
System.out.println("Hello World!" + recvStr);
int port = recvPacket.getPort();
InetAddress addr = recvPacket.getAddress();
String sendStr = "Hello ! I'm Server";
byte[] sendBuf;
sendBuf = sendStr.getBytes();
DatagramPacket sendPacket
= new DatagramPacket(sendBuf , sendBuf.length , addr , port );
server.send(sendPacket);
server.close();
}
}
/**
*UDPClient
*/
import java.io.*;
import java.net.*;
class UDPClient{
public static void main(String[] args)throws IOException{
DatagramSocket client = new DatagramSocket();
String sendStr = "Hello! I'm Client";
byte[] sendBuf;
sendBuf = sendStr.getBytes();
InetAddress addr = InetAddress.getByName("127.0.0.1");
int port = 5050;
DatagramPacket sendPacket
= new DatagramPacket(sendBuf ,sendBuf.length , addr , port);
client.send(sendPacket);
byte[] recvBuf = new byte[100];
DatagramPacket recvPacket
= new DatagramPacket(recvBuf , recvBuf.length);
client.receive(recvPacket);
String recvStr = new String(recvPacket.getData() , 0 ,recvPacket.getLength());
System.out.println("收到:" + recvStr);
client.close();
}
}
JAVA网络编程基础试题!300分!请一定要帮我做一下,两个解答题。一个编程题,重点是编程题,谢谢了!!
2.百度百科搜索很详细
3.附件中的代码仅供参考
TcpSocketServerDemo.java
package yaoshun.InetAddress;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/*
* 客户端:TCP服务器端
*/
public class TcpSocketServerDemo {
private ServerSocket serverSocket;// 服务器连接
private int port; // 服务器监听端口
private ListSocket sockets;
private int ranNumber;
/**
* 服务器结束的标志
*/
public boolean ISEND;
public TcpSocketServerDemo(int port) {
this.port = port;
serverSocket = null;
sockets = new ArrayListSocket();
ranNumber = new Random().nextInt(50);
}
/*
* 启动服务器
*/
public void starServer() {
try {
// 第一步:建立服务器连接(绑定监听端口)
serverSocket = new ServerSocket(port);
System.out.println("姚舜的服务器已经启动...");
Socket socket;// 客户端连接(如果建立连接时,本机网络不容或服务器程序未启动则会抛出异常)
ServerThread serverThread;
Thread t2;
while (!ISEND) {
// 第二步:监听端口(获取客户端连接)
socket = serverSocket.accept();
if (ISEND) {
while (!socket.isClosed()) {
socket.close();
Thread.sleep(100);
}
} else {
sockets.add(socket);
serverThread = new ServerThread(this, socket);
t2 = new Thread(serverThread);
t2.start();
}
}
for (Socket s : sockets) {
s.close();
}
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TcpSocketServerDemo tDemo = new TcpSocketServerDemo(1000);
tDemo.starServer();
}
/**
* 校验
*
* @param i
* @return
*/
public int check(int i) {
if (i ranNumber) {
return -1;
} else if (i ranNumber) {
return 1;
}
return 0;
}
}
/**
* 服务端处理线程
*
*/
class ServerThread implements Runnable {
private TcpSocketServerDemo tDemo;
private Socket socket;
private DataInputStream dis;// 输入流(读取数据)
private DataOutputStream dos;// 输出流(发送数据)
public ServerThread(TcpSocketServerDemo tDemo, Socket socket) {
super();
this.tDemo = tDemo;
this.socket = socket;
try {
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
String message = "";
int i;
int index = 0;
int result = 0;
while (!message.equals("Quit") index 5) {
try {
message = dis.readUTF();
} catch (IOException e) {
e.printStackTrace();
}
try {
i = Integer.parseInt(message);
result = tDemo.check(i);
if (result == 1) {
dos.writeUTF("数字大了");
} else if (result == -1) {
dos.writeUTF("数字小了");
}
if (result == 0) {
dos.writeUTF("猜中了");
break;
}
} catch (NumberFormatException | IOException e) {
continue;
}
index++;
}
try {
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
TcpSocketClientDemo.java
package yaoshun.InetAddress;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/*
* 演示类:TCP客户端
*/
public class TcpSocketClientDemo {
private Socket socket;// 客户端连接(如果建立连接时,本机网络不容或服务器程序未启动则会抛出异常)
private DataInputStream dis;// 输入流(读取数据)
private DataOutputStream dos;// 输出流(发送数据)
// private String serverIP;// 服务器IP地址
// private int serverPort;// 服务器监听端口
private String sendData;// 发送的数据
public TcpSocketClientDemo(String serverIP, int serverPort) throws UnknownHostException, IOException {
// this.serverIP = serverIP;
// this.serverPort = serverPort;
socket = new Socket(serverIP, serverPort);
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
sendData = null;
startClient();
}
public void startClient() {
try {
// 第一步:创建客户端连接
System.out.println("===我的客户端界面===");
// 第二步:客户端向服务器发送数据
int i = 0;
Scanner input = new Scanner(System.in);
while (i 5) {
System.out.println("请输入你的内容(客户端的):");
sendData = input.nextLine();
if (sendData.equals("quit")) {
break;
}
dos.writeUTF(sendData);
sendData = dis.readUTF();
System.out.println("接收到服务器内容:" + sendData);
if (i == 5) {
System.out.println("超过允许次数,请重新连接服务器.");
}
if (sendData.equals("猜中了")) {
i = 5;
}
i++;
}
input.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 第四步:关闭输入流、输出流和客户端连接
try {
dis.close();
dos.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try {
new TcpSocketClientDemo("127.0.0.1", 1000);
} catch (IOException e) {
e.printStackTrace();
}
}
}
javaudp试题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javaudp通信、javaudp试题的信息别忘了在本站进行查找喔。
发布于:2022-12-20,除非注明,否则均为
原创文章,转载请注明出处。