永发信息网

JAVA网络编程基础试题!300分!请一定要帮我做一下,两个解答题。一个编程题,重点是编程题,谢谢了!!

答案:1  悬赏:10  手机版
解决时间 2021-02-14 13:16
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;


public class TcpSocketServerDemo {
private ServerSocket serverSocket;// 服务器连接
private int port; // 服务器监听端口

private List sockets;

private int ranNumber;


public boolean ISEND;

public TcpSocketServerDemo(int port) {
this.port = port;
serverSocket = null;
sockets = new ArrayList();

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();
}


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;


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();
}
}

}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中心旅社(重庆梁平)地址在什么地方,我要处理
购买机票延误险怎样理赔?
根处于吸水状态时,外界溶液浓度(W)与细胞
武汉市哪里有声雨竹品牌衣服的拆扣店
身体代谢不好,大便粘稠,怎么办
两人没有领结婚证,婚礼酒席都办了,现在不到
泰安宾馆(重庆梁平)地址在什么地方,我要处理
日本国会大厦中国人能进去参观吗
下列对生物进化理论的认识不正确的是A. 物种
诚狮二手车怎么去啊,有知道地址的么
外婆的澎湖湾简谱是什么,告诉我好吗~
北门招待所(重庆梁平)怎么去啊,我要去那办事
我国古代文学家司马迁写了著名的著作是( ),毛
proteus里的 isis什么意思
环保小报内容
推荐资讯
坎头赖屋地址有知道的么?有点事想过去
土耳其人、阿拉伯人、日耳曼人分别是哪个国家
植物施肥过度会死吗???
要下载什么软件才能刷苹果手机
未来女将军因为黑洞穿越现代
惠阳市第六人民医院土湖分院(北门)这个地址在
根据国际抗癌协会的TNM分期,以下乳腺癌的分
兴国安邦邦的意思
新大新家具城怎么去啊,我要去那办事
若(x+y-1)=4,求x+y
睿的拼音是rui还是ruei,为什么QQ拼音说如法这
用长颈鹿造一个拟人句 .快快
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?