国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java中C/S通訊程序設計一例

2019-11-18 11:14:01
字體:
來源:轉載
供稿:網友

  一、 客戶端圖形界面

  本例中客戶端的圖形界面用Swing實現,服務器端不使用圖形界面

public class javaClient extends JFrame implements ActionListener//以JFrame為基類,實現ActionListener接口
{
JButton sendButton; //"發送"按鈕
JTextField inputField; // 輸入框
JTextArea outputAera; // 服務器返回框
public javaClient() //在建構函數中完成圖形界面的初始化
{
inputField=new JTextField("這里輸入..."); //供客戶端輸入的文本框
outputArea=new JTextArea("服務器返回"); //顯示服務器返回數據的文本域
sendButton=new JButton("發送");
JPanel panel=new JPanel(); //新建面板
panel.setLayout(new BorderLayout()); //設置面板風格為BorderLayout
panel.add(inputField,BorderLayout.NORTH); //放置控件
panel.add(outputArea,BorderLayout.CENTER);
setTitle("Java通訊客戶端");
setContentPane(panel);
}
}


  二、 客戶端通訊類clientAgent

  新建一個自定義包clientAgent,包含類clientAgent,該類用來執行和服務器端的交互,將界面和通訊類分開可以使程序的調試和維護更為輕易。clientAgent類的作用包括:

  1、在建構函數中建立和服務器的連接。

  2、sendRequest()方法向服務器發送數據。

  3、getResponse()方法從服務器端獲得回應

  1、 成員變量

clientAgent類的成員變量包括:
PRintStream ops; //輸出流(指向服務器)
DataInputStream ips;//輸入流(來自服務器)
String cltRequest;//客戶端請求
String svrResponse;//服務器端回應

  2、 建構函數clientAgent(String serverName,int port)包含兩個參數,接收從javaClient的main()函數中傳遞來的服務器名稱和端口號

public clientAgent(String serverName,int port)
{
try
{
Socket clientSocket=new Socket(serverName,port ); //根據服務器名和端口號建立Socket
ops=new PrintStream(clientSocket.getOutputStream());//獲得Socket的輸出流
ips=new DataInputStream(clientSocket.getInputStream());//獲得Socket的輸入流
}
catch(Exception e)
{
System.out.println("無法連接服務器!");
}
}

  3、 sendRequest()方法

public void sendRequest(String request)
{
ops.println(request); //向Socket的輸出流寫入字符串
}
4、 getRespone()方法
public String getResponse()
{
String str=new String();
try
{
str=ips.readLine(); //從Socket的輸入流讀入字符串
}
catch(IOException e){} //必須捕捉錯誤
return str;
}

  三、 客戶端javaClient類的main()函數和事件處理

  1、 main()函數

  有了上面的鋪墊,main()函數變得非常簡潔

public static void main(String[] args)
{
javaClient frame=new javaClient();
frame.pack();//注重javaClient是JFrame的派生類,調用基類方法
frame.setVisible(true);
ca=new clientAgent("127.0.0.1",1001); //傳遞服務器名稱和端口號
}

  2、 捕捉并處理單擊"發送"按鈕的事件

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==sendButton) //判定事件源控件是否是"發送"按鈕
{
ca.sendRequest(inputField.getText()); //發送文本框中的文本
outputArea.append("/n"+ca.getResponse()); //接收服務器回應并寫入文本域
}
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 当涂县| 昂仁县| 新疆| 芮城县| 淮阳县| 桐庐县| 瓮安县| 丘北县| 承德县| 时尚| 高雄市| 彭水| 东光县| 尖扎县| 江口县| 长葛市| 河间市| 上饶县| 丽江市| 夏邑县| 托克逊县| 威信县| 米泉市| 隆化县| 右玉县| 通许县| 象州县| 南充市| 平江县| 河西区| 马鞍山市| 外汇| 汉阴县| 秦皇岛市| 彩票| 弥勒县| 景宁| 镇江市| 武夷山市| 石河子市| 乌兰察布市|