欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用Java實現(xiàn)聊天程序

 更新時間:2022年09月15日 14:54:18   作者:GYN1996  
這篇文章主要為大家詳細(xì)介紹了用Java實現(xiàn)聊天程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

利用Java編寫聊天程序,供大家參考,具體內(nèi)容如下

首先計算機(jī)網(wǎng)絡(luò)有兩種傳輸層協(xié)議:TCP(面向連接),UDP(面向無連接)。今天就介紹基于這兩種協(xié)議的聊天程序。

先查明自己電腦的主機(jī)名

右鍵我的電腦-->屬性

一、基于UDP的聊天程序

1.基于UDP的發(fā)送端

package cn.com;

/**
?* 基于UDP
?* 聊天發(fā)送端
?*/
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Send {

? ? public static void main(String[] args) throws IOException {
? ? ? ? @SuppressWarnings("resource")
? ? ? ? DatagramSocket ds = new DatagramSocket();
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? String line = null;
? ? ? ? while ((line = sc.nextLine()) != null) {
? ? ? ? ? ? byte[] buf = line.getBytes();
? ? ? ? ? ? int length = buf.length;
? ? ? ? ? ? InetAddress address = InetAddress.getByName("1-PC21");//主機(jī)名
? ? ? ? ? ? DatagramPacket dp = new DatagramPacket(buf, length, address, 10086); ? //10086為自己設(shè)置的端口號
? ? ? ? ? ? ds.send(dp);
? ? ? ? }
? ? ? ? sc.close();
? ? }

}

2.基于UDP的接收端

package cn.com;

/**
?* 基于UDP
?* 聊天接收端
?*/
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Receive {

? ? public static void main(String[] args) throws IOException {
? ? ? ? @SuppressWarnings("resource")
? ? ? ? DatagramSocket ds = new DatagramSocket(10086);//端口號需一致

? ? ? ? while (true) {
? ? ? ? ? ? byte[] b = new byte[1024 * 1];
? ? ? ? ? ? int length = b.length;
? ? ? ? ? ? DatagramPacket dp = new DatagramPacket(b, length);
? ? ? ? ? ? ds.receive(dp);

? ? ? ? ? ? byte[] data = dp.getData();
? ? ? ? ? ? int length2 = dp.getLength();
? ? ? ? ? ? String hostAddress = dp.getAddress().getHostAddress();
? ? ? ? ? ? String s = new String(data, 0, length2);
? ? ? ? ? ? System.out.println(s + "來自" + hostAddress);
? ? ? ? }

? ? }

}

3.先運行接收端,在運行發(fā)送端

發(fā)送端發(fā)送“Hello World”,“My name is Tom”。

接收端收到信息

二、基于TCP的聊天程序

1.客戶端

package cn.com;
/**
?* 基于TCP
?* 聊天系統(tǒng)客戶端
?*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

public class Client {

? ? public static void main(String[] args) throws IOException {
? ? ? ? InetAddress address = InetAddress.getByName("1-PC21");//主機(jī)名
? ? ? ? int port = 10089;

? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? String line = null;
? ? ? ? while ((line = sc.nextLine()) != null) {
? ? ? ? ? ? @SuppressWarnings("resource")
? ? ? ? ? ? Socket socket = new Socket(address, port); ? //socket要在循環(huán)體中定義
? ? ? ? ? ? OutputStream os = socket.getOutputStream();
? ? ? ? ? ? os.write(line.getBytes());

? ? ? ? ? ? // 客戶端接收服務(wù)端返回的消息(輸入流)
? ? ? ? ? ? InputStream is = socket.getInputStream();
? ? ? ? ? ? byte[] b = new byte[1024 * 1];
? ? ? ? ? ? int len = is.read(b);
? ? ? ? ? ? String s = new String(b, 0, len);
? ? ? ? ? ? System.out.println(s);
? ? ? ? }
? ? ? ? sc.close();

? ? }

}

2.服務(wù)端

package cn.com;

/**
?* 基于TCP
?* 聊天系統(tǒng)服務(wù)端
?*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

? ? public static void main(String[] args) throws IOException {
? ? ? ? @SuppressWarnings("resource")
? ? ? ? ServerSocket ss = new ServerSocket(10089);

? ? ? ? while (true) {
? ? ? ? ? ? Socket accept = ss.accept(); ? ?//循環(huán)中用到accept,所以要在循環(huán)中新建定義
? ? ? ? ? ? InputStream is = accept.getInputStream();
? ? ? ? ? ? byte[] b = new byte[1024 * 1];
? ? ? ? ? ? int len = is.read(b);
? ? ? ? ? ? String s = new String(b, 0, len);
? ? ? ? ? ? System.out.println("已接收客戶端內(nèi)容-->" + s);

? ? ? ? ? ? // 給客戶端返回數(shù)據(jù)
? ? ? ? ? ? OutputStream os = accept.getOutputStream();
? ? ? ? ? ? String content = "客戶端接收成功";
? ? ? ? ? ? os.write(content.getBytes());

? ? ? ? ? ? os.close();
? ? ? ? ? ? is.close();
? ? ? ? ? ? accept.close();
? ? ? ? }

? ? }

}

3.還是先打開服務(wù)端,再打開客戶端,發(fā)送信息

客戶端發(fā)送:“今天星期四”,“天氣很好” 兩條信息。

服務(wù)端收到信息:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis插入后返回主鍵id的3種方式圖解

    mybatis插入后返回主鍵id的3種方式圖解

    這篇文章主要給大家介紹了關(guān)于mybatis插入后返回主鍵id的3種方式,很多時候,在向數(shù)據(jù)庫插入數(shù)據(jù)時,需要保留插入數(shù)據(jù)的,以便進(jìn)行后續(xù)的操作或者將存入其他表作為外鍵,需要的朋友可以參考下
    2023-08-08
  • java實現(xiàn)快速打字游戲

    java實現(xiàn)快速打字游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)快速打字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Javascript和Java語言有什么關(guān)系?兩種語言間的異同比較

    Javascript和Java語言有什么關(guān)系?兩種語言間的異同比較

    雖然Javascript與Java有緊密的聯(lián)系,但卻是兩個公司開發(fā)的不同的兩個產(chǎn)品。那么js和java有什么關(guān)系,兩種語言的不同點是什么呢?介于這兩個問題,小編一起給大家解答下
    2016-09-09
  • RabbitMQ基礎(chǔ)概念之信道channel詳解

    RabbitMQ基礎(chǔ)概念之信道channel詳解

    這篇文章主要介紹了RabbitMQ基礎(chǔ)概念之信道channel詳解,信道是生產(chǎn)消費者與rabbit通信的渠道,生產(chǎn)者publish或者消費者消費一個隊列都是需要通過信道來通信的,需要的朋友可以參考下
    2023-08-08
  • JAVA不使用線程池來處理的異步的方法詳解

    JAVA不使用線程池來處理的異步的方法詳解

    這篇文章主要介紹了JAVA不使用線程池來處理的異步的方法,在這個示例中,asyncTask方法創(chuàng)建了一個新的線程來執(zhí)行異步任務(wù),這個新線程會立即開始執(zhí)行,而主線程則會繼續(xù)執(zhí)行后續(xù)的代碼,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • SpringBoot集成FTP文件服務(wù)器簡單應(yīng)用方式

    SpringBoot集成FTP文件服務(wù)器簡單應(yīng)用方式

    這篇文章主要介紹了SpringBoot集成FTP文件服務(wù)器簡單應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 解決在for循環(huán)中remove list報錯越界的問題

    解決在for循環(huán)中remove list報錯越界的問題

    這篇文章主要介紹了解決在for循環(huán)中remove list報錯越界的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • seata的部署和集成詳細(xì)介紹

    seata的部署和集成詳細(xì)介紹

    這篇文章主要介紹了Java seata的部署和集成,文章中有詳細(xì)的代碼示例和圖片講解,對學(xué)習(xí)seata有一定的參考價值,需要的朋友可以參考一下
    2023-04-04
  • mybatis的mapper特殊字符轉(zhuǎn)移及動態(tài)SQL條件查詢小結(jié)

    mybatis的mapper特殊字符轉(zhuǎn)移及動態(tài)SQL條件查詢小結(jié)

    mybatis mapper文件中條件查詢符,如>=,<,之類是不能直接寫的會報錯的需要轉(zhuǎn)移一下,本文給大家介紹了常見的條件查詢操作,對mybatis的mapper特殊字符及動態(tài)SQL條件查詢相關(guān)知識感興趣的朋友一起看看吧
    2021-09-09
  • java括號匹配算法求解(用棧實現(xiàn))

    java括號匹配算法求解(用棧實現(xiàn))

    這篇文章主要介紹了java括號匹配算法求解(用棧實現(xiàn)),需要的朋友可以參考下
    2020-12-12

最新評論