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

首頁 > 編程 > Java > 正文

java網絡編程學習java聊天程序代碼分享

2019-11-26 15:50:30
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

package com.neusoft.edu.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * 服務器端代碼
 * 獲取客戶端發送的信息,顯示并且返回對應的回復
 * 1、創建ServerSocket對象
 * 2、調用accept方法獲取客戶端連接
 * 3、使用輸入流讀取客戶端發送的數據
 * 4、使用輸出流向客戶端寫入數據
 * 5、關閉對應的對象
 * @author L
 *
 */
public class ChatServer {
    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            //1、創建ServerSocket對象,8875為自定義端口號
            ServerSocket server = new ServerSocket(8857);

            //簡單提示
            System.out.println("等待客戶端連接……");

            //2、獲取客戶端連接
            Socket client = server.accept();

            //獲取客戶端的相關信息
            System.out.println(client.getInetAddress().getHostAddress() + "連接上來了……");

            //3.1、定義輸入流和輸出流對象
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                            client.getInputStream()));

            //用來獲取從控制臺輸入的數據,將該數據發送給客戶端
            BufferedReader inByServer = new BufferedReader(
                    new InputStreamReader(System.in));

            PrintWriter out = new PrintWriter(client.getOutputStream(), true);

            //讀取到的數據
            String data = null;
            String answer = null;

            //循環和客戶端進行通信
            do
            {
                //3.2、讀取客戶端發送的數據
                data = in.readLine();

                //在服務器端顯示讀取到的數據
                System.out.println("客戶端發送信息:" + data);

                //獲取服務器端要發送給客戶端的信息
                System.out.print("服務器端回復客戶端:");
                answer = inByServer.readLine();

                //3.3、將數據寫入到客戶端
                out.println(answer);
                out.flush();
            }while(!"bye".equals(data));

            //4、關閉相關資源
            out.flush();
            in.close();
            inByServer.close();
            out.close();

            //關閉Socket對象
            client.close();
            server.close();

            System.out.println("服務器端關閉……");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

復制代碼 代碼如下:

package com.neusoft.edu.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * 聊天客戶端
 * 1、創建Socket對象
 * 2、寫入數據
 * 3、讀取從服務器端發來的數據
 * 4、關閉
 * @author L
 *
 */
public class ChatClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            //1、創建Socket對象,("192.168.1.107", 8857)分別為主機IP和端口號,兩個類端口號要一致
            Socket client = new Socket("192.168.1.107", 8857);

            //2.1、創建輸入流和輸出流對象
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                            client.getInputStream()));

            PrintWriter out = new PrintWriter(client.getOutputStream(), true);

            BufferedReader inByClient = new BufferedReader(
                    new InputStreamReader(System.in));

            //服務器端發送的數據
            String data = null;
            //客戶端向服務器端寫入的數據
            String answer = null;

            do
            {
                //2.2、客戶端的讀寫操作
                System.out.print("你說:");
                //獲取要發送給服務器端的數據
                answer = inByClient.readLine();
                //向服務器端寫入數據
                out.println(answer);
                out.flush();

                //獲取服務器端發送的數據
                data = in.readLine();
                //輸出從服務器端獲取的數據
                System.out.println("服務器端返回信息是:" + data);
            }while(!"bye".equals(data));

            //3、關閉
            in.close();
            out.close();
            inByClient.close();
            client.close();

            System.out.println("客戶端關閉……");
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中牟县| 渭源县| 华池县| 新巴尔虎右旗| 汽车| 沙田区| 舞阳县| 延川县| 无棣县| 百色市| 英德市| 水城县| 兰考县| 太保市| 万山特区| 泾阳县| 高安市| 天津市| 大渡口区| 长泰县| 云龙县| 仁化县| 页游| 广昌县| 广州市| 文昌市| 武邑县| 绥滨县| 铅山县| 靖西县| 济宁市| 万盛区| 芦溪县| 扶沟县| 茶陵县| 长海县| 都安| 唐山市| 永安市| 万源市| 苏尼特右旗|