日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分布式服务器客户端实验

發(fā)布時(shí)間:2024/1/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式服务器客户端实验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

服務(wù)器端Socket程序

package?com.aaa.servet;

?

import?java.io.BufferedReader;

import?java.io.IOException;

import?java.io.InputStreamReader;

import?java.net.ServerSocket;//導(dǎo)入java.net包,用于網(wǎng)絡(luò)通訊

import?java.net.Socket;

?

public?class?ServetSocketTest {

public?static?void?main(String[] args) {

System.out.println("...啟動服務(wù)器...");

//1.初始化服務(wù)端Socket并綁定端口為8888

try?{

ServerSocket serverSocket=new?ServerSocket(8888);//需要添加try/catch塊

//2.等待客戶端的連接

Socket socket=serverSocket.accept();

//3.獲取輸入流,通過socket對象流,傳遞給緩沖字符流進(jìn)行讀取;

BufferedReader bufferReader=new?BufferedReader(new?InputStreamReader(socket.getInputStream()));

//4.讀取一行數(shù)據(jù);

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.創(chuàng)建socket對象,建立到服務(wù)i端的連接;

    try?{

    Socket socket=new?Socket("127.0.0.1",8888);

    //2.通過緩沖輸出流,包裝下socket對象的輸出字節(jié)流,進(jìn)行寫操作;

    BufferedWriter bufferWriter=new?BufferedWriter(new?OutputStreamWriter(socket.getOutputStream()));

    //3.構(gòu)造字符串,寫進(jìn)去

    String str="你是我的小心肝";

    bufferWriter.write(str);

    //3.2還需要將緩沖中的內(nèi)容放到socket

    bufferWriter.flush();

    //4.注意一定要有關(guān)閉連接;

    socket.shutdownOutput();

    } catch?(UnknownHostException e) {

    e.printStackTrace();

    } catch?(IOException e) {

    e.printStackTrace();

    }

    ?

    }

    }

  • 案例效果:
  • ?
  • ?

    5.現(xiàn)在需要繼續(xù)升級,如何循環(huán)!!!可以多個(gè)循環(huán);

    服務(wù)器端修改為:

    客戶端修改為:

    ?

    --------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.創(chuàng)建服務(wù)器端的DatagramSocket數(shù)據(jù)包,
    ????????try {
    ????????????DatagramSocket datagramSocket=new DatagramSocket(8800);
    ????????????//2.創(chuàng)建數(shù)據(jù)報(bào),用于接受用戶傳送過來的數(shù)據(jù);存放于字節(jié)數(shù)組;
    ????????????byte[]bytes=new byte[1024];
    ????????????DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length);
    ????????????System.out.println("*****服務(wù)器端已經(jīng)啟動****");
    ????????????//使用receive方法接受;
    ????????????datagramSocket.receive(datagramPacket);
    ????????????//4.讀取數(shù)據(jù);
    ????????????String info=new String(bytes,0,datagramPacket.getLength());
    ????????????//5.輸出信息;
    ????????????System.out.println("服務(wù)器,客戶端信息為:"+info);
    ????????????//升級,服務(wù)器端響應(yīng)客戶端;
    ????????????InetAddress address=datagramPacket.getAddress();
    ????????????int port=datagramPacket.getPort();
    ????????????byte[]sinfo="歡迎您".getBytes();
    ????????????//升級2.創(chuàng)建數(shù)據(jù)報(bào),包含socket信息;
    ????????????DatagramPacket packet=new DatagramPacket(sinfo,sinfo.length,address,port);
    ????????????// 升級3;
    ????????????datagramSocket.send(packet);
    ????????????//關(guān)閉資源;
    ????????????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.定義服務(wù)器的地址、端口號、數(shù)據(jù);
    ????????try {
    ????????????InetAddress address=InetAddress.getByName("localhost");
    ????????????int port=8800;
    ????????????byte[]data="用戶名:admin,密碼:123".getBytes();
    ????????????//2.創(chuàng)建數(shù)據(jù)報(bào),包含發(fā)送的數(shù)據(jù)信息,可以使用帶有4個(gè)參數(shù)的方法;
    ????????????DatagramPacket datagramPacket=new DatagramPacket(data,data.length,address,port);
    ????????????//3.創(chuàng)建DatagramSocket對象;
    ????????????DatagramSocket datagramSocket=new DatagramSocket();
    ????????????//4.向服務(wù)器發(fā)送數(shù)據(jù);
    ????????????datagramSocket.send(datagramPacket);
    ????????????升級
    ????????????byte[]data2=new byte[1024];
    ????????????DatagramPacket packet2=new DatagramPacket(data2,data2.length);
    ????????????//2.接受服務(wù)器響應(yīng)的數(shù)據(jù) ;
    ????????????datagramSocket.receive(packet2);
    ????????????//3.讀取數(shù)據(jù);
    ????????????String reply=new String(data2,0,packet2.getLength());
    ????????????System.out.println("我是客戶端,服務(wù)器端說:"+reply);
    ????????????//4.關(guān)閉資源;
    ????????????datagramSocket.close();
    ????????} catch (UnknownHostException e) {
    ????????????e.printStackTrace();
    ????????} catch (SocketException e) {
    ????????????e.printStackTrace();
    ????????} catch (IOException e) {
    ????????????e.printStackTrace();
    ????????}
    ????}
    }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的分布式服务器客户端实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。