亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java+jdbc+mysql+socket搭建局域網聊天室

2024-07-14 08:43:30
字體:
來源:轉載
供稿:網友

本文實現思路:利用UDP協議進行局域網信息傳輸,建立點對點的聊天網絡,每個端用戶有自己的一個mysql數據庫,所以需要獲取其數據庫用戶名和密碼,然后通過該數據庫內容發送信息,接收消息則沒有限制,

步驟:

  • 建立數據表存儲主機ip,接收信息端口port,nickname
  • 向所有用戶發送信息
  • 接收信息
  • 小部件(添加好友,刪除好友)

一、建立數據表存儲主機ip,接收信息端口port,nickname

在mysql數據庫里建立chatusr數據表,表的格式為:

java,jdbc,mysql,socket,局域網聊天室

檢測表是否存在和建立數據表的代碼如下:

 void linkdb() {    try {      Class.forName("com.mysql.jdbc.Driver");      conn = DriverManager.getConnection(url,user,password);      DatabaseMetaData dbmd=conn.getMetaData();      ResultSet tableRS = dbmd.getTables(null, null, "chatusr", null );      if (tableRS.next())        System.out.println(" the table is exsited");      else {        String sql = "CREATE TABLE chatusr(";          sql+= " ip char(15),";          sql+= " port int(6),";          sql+= " name char(255),";        sql+="PRIMARY KEY(ip))";        pst=conn.prepareStatement(sql);        pst.executeUpdate();      }    } catch (SQLException e) {      // TODO 自動生成的 catch 塊      e.printStackTrace();    } catch (ClassNotFoundException e) {      // TODO 自動生成的 catch 塊      e.printStackTrace();    }    System.out.println("連接數據庫成功");  }

二、向所有用戶發送信息

向所有數據庫中成員和自己發送消息;

【問題一】:string在存儲中文字符時和byte[]轉換時長度不一樣和亂碼問題 
【解決方法】:用GBK標準進行轉換以解決中文亂碼問題,GBK標準下一個中文字符為兩個char,因此可以用一個函數先計算出string轉換成byte[]后的長度,再按照這個長度進行傳輸數據即可 
【問題二】:由于UDP協議中的數據報不包含用戶自定義的接收信息端口,因此,我把UDP傳輸的數據前四位設置成端口位置,每次發送信息時都會把自己的接受信息的端口加在頭部,這樣就能實現,當一個未知主機向我發送信息時,還能回復其信息。

public int getlength(byte[] conf) {    int c=0,i;    for(i=0;i<250;++i)      if(conf[i]==10)//'/0'的編碼為10,表示數組結尾        break;    return i+1;  }public void send(String message) {      String string=m_port;       //string+=sendcontent.getText();      string+=message;      byte[] databyte = new byte[250];      try {        databyte=string.getBytes("GBK");      } catch (UnsupportedEncodingException e1) {        // TODO 自動生成的 catch 塊        e1.printStackTrace();      }      //string.getBytes(0, string.length(), databyte, 0);      int len=getlength(databyte);    //發送給自己    try {      DatagramPacket sendPacket = new DatagramPacket(databyte,len, java.net.InetAddress.getByName(m_ip), Integer.parseInt(m_port));      sendSocket=new DatagramSocket();      sendSocket.send(sendPacket);    } catch (IOException ioe) {      record.append("網絡通信出現錯誤,問題在于" + ioe.toString());    }    //發送給其他人    for(int ti=0;ti<num;++ti) {      try {        DatagramPacket sendPacket = new DatagramPacket(databyte, len, java.net.InetAddress.getByName(ip[ti]), Integer.parseInt(port[ti]));        sendSocket=new DatagramSocket();        sendSocket.send(sendPacket);      } catch (IOException e) {        // TODO 自動生成的 catch 塊        e.printStackTrace();      }    }  }

三、接收信息

接收消息時將信息和端口信息分開,若為陌生人,可以將其主機ip和端口加到數據庫里,

public void run() {    // TODO 自動生成的方法存根    while (true) {      try {        byte buf[] = new byte[250];        receivePacket = new DatagramPacket(buf, buf.length);        receiveSocket.receive(receivePacket);        String t_ip = receivePacket.getAddress().toString().trim();        t_ip=t_ip.substring(1);//獲取ip        String t_name="unname";        Date date=new Date();        byte[] data = receivePacket.getData();        String receivedString = new String(data, "GBK");        String t_port = receivedString.substring(0,4);//獲取端口        receivedString=receivedString.substring(4);        if(t_ip.equals(m_ip)) {          t_name=m_name;          record.append("來自本機://" + t_ip + "/n端口:" + receivePacket.getPort()+"/n時間:"+ date.toString());          record.append("/n"+t_name+":/t");        }        else {          int ti=0;          for(ti=0;ti<num;++ti) {            if(t_ip.equals(ip[ti])) {              break;            }          }          if(ti==num) {            mysql="Insert Into chatusr Values ('"+t_ip+"','"+Integer.parseInt(t_port)+"','"+t_name+"')";            if(mm.add(mysql))              System.out.println("插入成功");            t_name="unnamed";          }          else {            t_name=name[ti];          }          record.append("/n來自主機://" + t_ip + "/n端口:" + receivePacket.getPort()+"/n時間:"+ date.toString());          record.append("/n"+t_name+":/t");        }        record.append(receivedString+"/n");      } catch (IOException e) {        record.append("網絡通信出現錯誤,問題在于" + e.toString());      }      record.selectAll();    }  }

四、小部件

1、添加好友、刪除好友 
2、顯示當前群聊信息

  • 功能很簡單,大家可以根據這個框架,自己完善,
  • 代碼太亂,貼一個github鏈接

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品入口日韩视频大尺度| 麻豆成人在线看| 欧美麻豆久久久久久中文| 国产日韩欧美在线看| 国产精品一区二区av影院萌芽| 久久久久久久国产| 亚洲欧美在线免费观看| 国产精品色视频| 亚洲女人初尝黑人巨大| 久久久久久香蕉网| 91国产视频在线播放| 国色天香2019中文字幕在线观看| 亚洲国产精彩中文乱码av| 欧美在线欧美在线| 亚洲va久久久噜噜噜久久天堂| 97视频免费看| 国产精品丝袜一区二区三区| 久久久久久噜噜噜久久久精品| 日韩精品亚洲精品| 中文字幕少妇一区二区三区| xvideos成人免费中文版| 精品视频久久久久久久| 久久久精品亚洲| 久久人人爽亚洲精品天堂| 亚洲欧美日韩在线一区| 欧美在线欧美在线| 日韩电影大片中文字幕| 欧美精品福利视频| 成人欧美一区二区三区黑人孕妇| 欧美性猛交xxxx偷拍洗澡| 全色精品综合影院| 欧美性生交大片免网| 国产精品中文在线| 国产91色在线播放| 国内自拍欧美激情| 最新国产成人av网站网址麻豆| 欧美视频13p| 97超视频免费观看| 欧美激情va永久在线播放| 亚洲九九九在线观看| 亚洲人成电影网站色www| 视频一区视频二区国产精品| 国产丝袜一区二区三区免费视频| 亚洲美女av黄| 亚洲综合日韩中文字幕v在线| 国产人妖伪娘一区91| 九九久久精品一区| 中文字幕久精品免费视频| 亚洲国产精久久久久久久| 欧美激情精品久久久久久免费印度| 欧美亚洲在线观看| 亚洲护士老师的毛茸茸最新章节| 日产精品久久久一区二区福利| 日韩欧美在线观看| 91精品国产自产91精品| 亚洲精品v欧美精品v日韩精品| 午夜精品久久久久久久99热浪潮| 欧美精品免费看| 精品视频偷偷看在线观看| 成人福利网站在线观看| 成人精品视频99在线观看免费| 欧美激情精品久久久久久| 亚洲精品欧美日韩| 亚洲最大中文字幕| 97视频在线观看亚洲| 亚洲国产欧美精品| 久久成人亚洲精品| 亚洲激情在线观看| 91久久国产精品| 91九色国产视频| 日韩成人中文字幕在线观看| 亚洲黄色成人网| 国产精品狼人色视频一区| 亚洲精品美女在线观看| 精品在线小视频| 亚洲一区二区自拍| 国产精品自产拍在线观看中文| 精品国产鲁一鲁一区二区张丽| 国产亚洲欧洲高清一区| 原创国产精品91| 亚洲人高潮女人毛茸茸| 尤物tv国产一区| 久久久国产成人精品| 欧美性xxxx极品高清hd直播| 久久久久国产视频| 中文字幕综合一区| 欧美在线激情视频| 国产精品久久久久久久久粉嫩av| 亚洲一区二区三| 日韩在线精品一区| 中文字幕日韩欧美| 97色在线播放视频| 性色av一区二区三区| 国模私拍一区二区三区| 国产精品精品一区二区三区午夜版| 日韩在线视频二区| 亚洲第一av网| 亚洲一区亚洲二区亚洲三区| 成人在线视频福利| 国产日韩欧美在线观看| 国产区亚洲区欧美区| 欧美一级大片在线观看| 亚洲天堂av综合网| 91社区国产高清| 欧美日韩在线另类| 亚洲国产精品高清久久久| 亚洲91av视频| 97久久精品人人澡人人爽缅北| 欧亚精品在线观看| 色樱桃影院亚洲精品影院| 欧美在线视频一区| 第一福利永久视频精品| 国产日韩在线精品av| 亚洲人成网站色ww在线| 亚洲一区二区三区四区在线播放| 黑人巨大精品欧美一区免费视频| 日韩成人av网| 4438全国亚洲精品在线观看视频| 欧美激情2020午夜免费观看| 在线视频中文亚洲| 国产美女精品免费电影| 国产成人免费av电影| 伊人久久综合97精品| 亚洲 日韩 国产第一| 国产精品欧美激情在线播放| 国内偷自视频区视频综合| 亚洲新声在线观看| 久久免费国产视频| 大桥未久av一区二区三区| 国产成人激情视频| 久久伊人免费视频| 色天天综合狠狠色| 国产网站欧美日韩免费精品在线观看| 日韩精品在线视频美女| 国产精品va在线播放我和闺蜜| 久久97精品久久久久久久不卡| 欧美一区二区色| 国产综合久久久久久| www.美女亚洲精品| 久久亚洲精品国产亚洲老地址| 欧美性极品xxxx娇小| 一区二区欧美久久| 亚洲精品国产电影| 欧美精品videossex性护士| 91沈先生作品| 精品成人在线视频| 成人字幕网zmw| 亚洲成人网在线观看| 91在线观看免费高清| 日韩美女视频在线观看| 69久久夜色精品国产69| 欧美极品少妇xxxxⅹ免费视频| 欧美极品在线视频| 色妞在线综合亚洲欧美| 日本不卡免费高清视频| 日韩国产一区三区| 日韩精品免费一线在线观看| 国外视频精品毛片| 日产精品99久久久久久| 91国自产精品中文字幕亚洲| 欧美亚洲成人精品| 国产欧美在线看| 国产精品一区二区久久| 国内精品美女av在线播放|