国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
中文字幕网在线| 国产国语**毛片高清视频| ·天天天天操| 国产精品久久久久久久牛牛| 国产人成网在线播放va免费| 最近免费中文字幕大全免费第三页| 久久er视频| 色综合久久五月天| 久久国产精品黑丝| 天堂中文在线视频| 国产精品第八页| 日韩精品免费一区二区| 激情小说 在线视频| 国产一级视频| 日韩精品免费一区二区| 国产又色又爽又黄刺激在线视频| 中文字幕日本在线观看| 伊人影院在线观看| 福利视频网址导航| 精品入口蜜桃| 天堂在线视频| 麻豆国产在线视频| 国产三级做爰在线观看| 亚洲最新永久在线观看| 国产麻豆视频| 任你操在线观看| 国产精品视频一区麻豆| 免费看ww视频网站入口| 国产精品爱久久久久久久小说| 青青草原国产在线观看| 国产午夜三区视频在线| 欧美成人久久电影香蕉| 精品国内一区二区三区免费视频| 国产麻豆视频| 欧美精品一区二区三区免费| 国产成在线观看免费视频| 久久久久久国产视频| 国产精品日日爱| 国产美女自拍视频| av文字幕在线观看| 精品美女视频在线观看免费软件| 欧美人成在线观看网站高清| av免费在线观| 在线观看的网站你懂的| 91美女主播在线视频| 国产黄色一级片| 91精品专区| 在线免费观看黄色片| 在线黄色国产电影| 精品欧美色视频网站在线观看| 国产视频精品久久| 国产亚av手机在线观看| 国产美女极品在线| 国产精品自拍亚洲| 国产视频福利| 精品视频二区三区| 四虎网站在线观看| 九九热在线视频观看| 久热中文字幕精品视频在线| 久久久久久91精品色婷婷| 国产中文在线视频| 国产精品蜜臀| av色在线观看| 国产中文字幕在线| 国产福利在线播放麻豆| 中文字幕av网| 美女av在线播放| 欧美成人亚洲高清在线观看| 黄色国产在线| 99久久99热久久精品免费看| 日本动漫理论片在线观看网站| 九九视频九九热| 国产精品你懂的在线观看| av男人的天堂网| 成 人免费视频播放| 国产私人影院| 久久国产精品黑丝| 在线中文视频| 天堂资源在线中文| av一级在线| 国产三级在线观看| 波多野结衣久久高清免费| 久久久久国产精品嫩草影院| 国产极品一区二区三区 | 国产精品剧情一区二区三区 | 成年人在线观看| 在线播放一区二区精品产| 九九精品九九| 尤物在线精品视频| 国产亚洲精品午夜高清影院| 免费在线黄色av| 国产无遮挡又黄又爽免费网站 | 伊人免费视频| 国产污视频在线| 激情四房婷婷| 嫩草在线播放| 亚洲成人电视网| 伊人网在线视频| 国产区视频在线播放| 免费日本黄色| 久久精品最新免费国产成人| 欧美亚洲天堂| 欧美色第一页| 青草视频在线播放| 精品视频一区二区观看| 国产精品欧美色图| 国产偷窥洗澡视频| 国产一级片在线播放| 午夜国产视频| 国产激情网址| 在线观看免费黄色| 免费观看久久久久| 尤物视频在线免费观看| 国产国产人免费人成免费视频| √天堂资源地址在线官网| 国产精品自产拍在线网站| 国产伦精品一区二区三区高清版禁| 蜜桃av在线免费观看| 久久久久久久久久久久久91| 天天插天天狠天天透| 欧美大交乱xxxx| 高清视频一区二区三区四区| 国产你懂的在线观看| 天天操天天操一操| 国产精品久久久久白浆| av人人综合网| 午夜不卡视频| 亚洲欧美中文字幕在线观看 | 高清视频一区二区三区四区| 国产在线观看av| 国产三级在线免费| 亚洲一道本在线| 国产一区二区三区福利| 国产精品777一区二区| 日本亚洲欧美| 国产精品久久久久一区二区国产| 在线成人一区| 国产日韩欧美精品一区二区三区| 亚洲综合激情六月婷婷在线观看| 麻豆av电影在线观看| 2018狠狠干| 国产精品外围在线观看| 伊人伊人av电影| 国产一区电影| 91超碰在线免费| 黄色片免费在线| 青青草中文字幕| 99久久99热久久精品免费看| 玖玖在线视频| 性网站在线看| 99中文字幕一区| 国产大学生粉嫩无套流白浆| 国产美女视频一区二区二三区| gogogo影视剧免费观看在线观看| 国产精品18久久久久久久久久| 丁香综合在线| 国产免费永久在线观看| 青青久草在线| h网址在线观看| 色吊丝av中文字幕| av中文在线资源| 亚洲第一页在线播放| 国产porn在线| 中文字幕中文字幕在线中高清免费版 | 在线免费看黄| 国产黄a三级三级三级av在线看| 丁香花在线电影小说观看 | 毛片网站在线观看| 日本啊v在线| 天天草天天爽| 日本高清中文字幕二区在线| 日韩黄色成人| 超碰在线免费播放| 免费一区二区在线观看| 狠狠干五月天| 国产视频精品久久| 国产高清在线a视频大全| 国产黄视频在线观看| 精精国产xxxx视频在线中文版 | 国产午夜精品一区理论片| 成人av小说网| 国产精品亚洲色图| 国产写真视频在线观看| 国产不卡精品一区二区三区| 夜色资源网av在先锋网站观看| jizz性欧美| 最新中文字幕在线| 永久免费不卡在线观看黄网站| www.香蕉视频在线观看| 麻豆国产在线播放| 国产一卡二卡3卡4卡四卡在线| 国产videos| 男人天堂99| 国产私拍精品| 免费午夜一级| 99中文字幕一区| 国产香蕉免费精品视频| av麻豆国产| 国产欧美日韩第一页| 日韩黄色成人|