最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

先查明自己電腦的主機名

右鍵我的電腦-->屬性

一、基于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");//主機名
? ? ? ? ? ? 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");//主機名
? ? ? ? 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)文章

  • Java date format時間格式化操作示例

    Java date format時間格式化操作示例

    這篇文章主要介紹了Java date format時間格式化操作,結(jié)合具體實例形式分析了java針對日期時間進(jìn)行格式化操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • SpringMVC實現(xiàn)通過郵件找回密碼功能

    SpringMVC實現(xiàn)通過郵件找回密碼功能

    本篇文章主要介紹的是SpringMVC實現(xiàn)通過郵件找回密碼功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
    2016-10-10
  • java動態(tài)構(gòu)建數(shù)據(jù)庫復(fù)雜查詢教程

    java動態(tài)構(gòu)建數(shù)據(jù)庫復(fù)雜查詢教程

    這篇文章主要介紹了java動態(tài)構(gòu)建數(shù)據(jù)庫復(fù)雜查詢的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • Jmeter測試必知的名詞及環(huán)境搭建

    Jmeter測試必知的名詞及環(huán)境搭建

    我們本章開始學(xué)習(xí)Jmeter,后續(xù)還會有RF以及LoadRunner 的介紹,為什么要學(xué)習(xí)Jmeter,它主要是用來做性能測試的,其中它也需要間接或直接的需要用到抓包工具
    2021-09-09
  • Java冒泡排序及優(yōu)化介紹

    Java冒泡排序及優(yōu)化介紹

    大家好,本篇文章主要講的是Java冒泡排序及優(yōu)化介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • SpringBoot+VUE實現(xiàn)數(shù)據(jù)表格的實戰(zhàn)

    SpringBoot+VUE實現(xiàn)數(shù)據(jù)表格的實戰(zhàn)

    本文將使用VUE+SpringBoot+MybatisPlus,以前后端分離的形式來實現(xiàn)數(shù)據(jù)表格在前端的渲染,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • 一文搞清楚Spring事務(wù)

    一文搞清楚Spring事務(wù)

    Spring事務(wù)是指在Spring框架中對于數(shù)據(jù)庫操作的一種支持,它通過對一組數(shù)據(jù)庫操作進(jìn)行整體控制來保證數(shù)據(jù)的一致性和完整性。本文介紹Spring事務(wù)介紹的非常詳細(xì),有需要的朋友可以參考本文
    2023-04-04
  • SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題

    SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題

    這篇文章主要介紹了SpringBoot啟動多數(shù)據(jù)源找不到合適的驅(qū)動類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 使用bitset實現(xiàn)毫秒級查詢(實例講解)

    使用bitset實現(xiàn)毫秒級查詢(實例講解)

    下面小編就為大家?guī)硪黄褂胋itset實現(xiàn)毫秒級查詢(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 常見JavaWeb安全問題和解決方案

    常見JavaWeb安全問題和解決方案

    這篇文章主要介紹了常見JavaWeb安全問題和解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03

最新評論

肇源县| 汤原县| 建宁县| 六安市| 牡丹江市| 会同县| 都匀市| 湘乡市| 监利县| 怀宁县| 昌都县| 营山县| 东兴市| 浦江县| 衢州市| 措美县| 邮箱| 读书| 西城区| 县级市| 金寨县| 岑溪市| 申扎县| 金溪县| 建德市| 高碑店市| 金塔县| 鹤岗市| 城口县| 万安县| 上林县| 中超| 自贡市| 综艺| 海阳市| 河池市| 铅山县| 靖宇县| 花莲县| 台北市| 天等县|