分布式服务器客户端实验
?
服務器端Socket程序
package?com.aaa.servet;
?
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.net.ServerSocket;//導入java.net包,用于網絡通訊
import?java.net.Socket;
?
public?class?ServetSocketTest {
public?static?void?main(String[] args) {
System.out.println("...啟動服務器...");
//1.初始化服務端Socket并綁定端口為8888
try?{
ServerSocket serverSocket=new?ServerSocket(8888);//需要添加try/catch塊
//2.等待客戶端的連接
Socket socket=serverSocket.accept();
//3.獲取輸入流,通過socket對象流,傳遞給緩沖字符流進行讀取;
BufferedReader bufferReader=new?BufferedReader(new?InputStreamReader(socket.getInputStream()));
//4.讀取一行數據;
String str=bufferReader.readLine();
//5.輸出打印
System.out.println(str);
} catch?(IOException e) {
e.printStackTrace();
}
}
}
package?com.aaa.clicent;
?
import?java.io.BufferedWriter;
import?java.io.IOException;
import?java.io.OutputStreamWriter;
import?java.net.Socket;
import?java.net.UnknownHostException;
?
public?class?ClientSocket {
public?static?void?main(String[] args) {
//1.創建socket對象,建立到服務i端的連接;
try?{
Socket socket=new?Socket("127.0.0.1",8888);
//2.通過緩沖輸出流,包裝下socket對象的輸出字節流,進行寫操作;
BufferedWriter bufferWriter=new?BufferedWriter(new?OutputStreamWriter(socket.getOutputStream()));
//3.構造字符串,寫進去
String str="你是我的小心肝";
bufferWriter.write(str);
//3.2還需要將緩沖中的內容放到socket
bufferWriter.flush();
//4.注意一定要有關閉連接;
socket.shutdownOutput();
} catch?(UnknownHostException e) {
e.printStackTrace();
} catch?(IOException e) {
e.printStackTrace();
}
?
}
}
?
5.現在需要繼續升級,如何循環!!!可以多個循環;
服務器端修改為:
客戶端修改為:
?
--------UDP Socket連接---
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServer {
????public static void main(String[] args) {
????????//1.創建服務器端的DatagramSocket數據包,
????????try {
????????????DatagramSocket datagramSocket=new DatagramSocket(8800);
????????????//2.創建數據報,用于接受用戶傳送過來的數據;存放于字節數組;
????????????byte[]bytes=new byte[1024];
????????????DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length);
????????????System.out.println("*****服務器端已經啟動****");
????????????//使用receive方法接受;
????????????datagramSocket.receive(datagramPacket);
????????????//4.讀取數據;
????????????String info=new String(bytes,0,datagramPacket.getLength());
????????????//5.輸出信息;
????????????System.out.println("服務器,客戶端信息為:"+info);
????????????//升級,服務器端響應客戶端;
????????????InetAddress address=datagramPacket.getAddress();
????????????int port=datagramPacket.getPort();
????????????byte[]sinfo="歡迎您".getBytes();
????????????//升級2.創建數據報,包含socket信息;
????????????DatagramPacket packet=new DatagramPacket(sinfo,sinfo.length,address,port);
????????????// 升級3;
????????????datagramSocket.send(packet);
????????????//關閉資源;
????????????datagramSocket.close();
????????} catch (SocketException e) {
????????????e.printStackTrace();
????????} catch (IOException e) {
????????????e.printStackTrace();
????????}
????}
}
==客戶端
import java.io.IOException;
import java.net.*;
public class UDPClient {
????public static void main(String[] args) {
????????//1.定義服務器的地址、端口號、數據;
????????try {
????????????InetAddress address=InetAddress.getByName("localhost");
????????????int port=8800;
????????????byte[]data="用戶名:admin,密碼:123".getBytes();
????????????//2.創建數據報,包含發送的數據信息,可以使用帶有4個參數的方法;
????????????DatagramPacket datagramPacket=new DatagramPacket(data,data.length,address,port);
????????????//3.創建DatagramSocket對象;
????????????DatagramSocket datagramSocket=new DatagramSocket();
????????????//4.向服務器發送數據;
????????????datagramSocket.send(datagramPacket);
????????????升級
????????????byte[]data2=new byte[1024];
????????????DatagramPacket packet2=new DatagramPacket(data2,data2.length);
????????????//2.接受服務器響應的數據 ;
????????????datagramSocket.receive(packet2);
????????????//3.讀取數據;
????????????String reply=new String(data2,0,packet2.getLength());
????????????System.out.println("我是客戶端,服務器端說:"+reply);
????????????//4.關閉資源;
????????????datagramSocket.close();
????????} catch (UnknownHostException e) {
????????????e.printStackTrace();
????????} catch (SocketException e) {
????????????e.printStackTrace();
????????} catch (IOException e) {
????????????e.printStackTrace();
????????}
????}
}
?
總結
以上是生活随笔為你收集整理的分布式服务器客户端实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何提高工作效率,拥有自由支配时间?
- 下一篇: JAVAEE框架之SpringMVC基础