當前位置:編程學習大全網 - 編程語言 - JAVA網絡編程基礎試題!300分!請壹定要幫我做壹下,兩個解答題。壹個編程題,重點是編程題,謝謝了!!

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?List<Socket>?sockets;

private?int?ranNumber;

/**

?*?服務器結束的標誌

?*/

public?boolean?ISEND;

public?TcpSocketServerDemo(int?port)?{

this.port?=?port;

serverSocket?=?null;

sockets?=?new?ArrayList<Socket>();

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

}

}

}

  • 上一篇:軟件架構師主要做什麽?
  • 下一篇:金頂大佛坐於正覺寺後山之巔坐北朝南背靠牡丹江前有正覺寺
  • copyright 2024編程學習大全網