Socket網路程式設計(二)UDP協議實現聊天工具
package UDP_chat; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.List; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; class Chat extends Frame { List lst = new List(6); TextField tfIP = new TextField(15); TextField tfData = new TextField(20); DatagramSocket ds = null; public List setLst(String item,int index){ lst.add(item, index); return lst; } //建構函式裡面實現視窗初始化、接收資訊(執行緒)、傳送資訊 public Chat(){ try{ ds = new DatagramSocket(3000); }catch(Exception e){ e.printStackTrace(); } this.add(lst,"Center"); Panel p = new Panel(); this.add(p,"South"); p.setLayout(new BorderLayout()); p.add(tfIP,"West"); p.add(tfData,"East"); //接收資訊:建立一個執行緒,一直在接收資訊 new Thread(new Runnable(){ public void run(){ byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,1024); //迴圈接收資訊 while(true){ try{ ds.receive(dp); String haha = "訊息:"+new String(dp.getData(),0,dp.getLength()) +" from "+dp.getAddress().getHostAddress() +":"+dp.getPort(); //將接收的資訊列印到資訊欄 lst.add(haha,0); }catch(Exception e){ //ds沒有關閉才執行丟擲異常 if(!ds.isClosed()){ e.printStackTrace(); } } } } }).start(); //傳送訊息:訊息資訊點回車,觸發事件 tfData.addActionListener(new ActionListener(){ //需要實現此方法 public void actionPerformed(ActionEvent e){ byte [] buf; //獲取訊息資訊 buf = tfData.getText().getBytes(); try{ //組裝訊息內容 DatagramPacket dp= new DatagramPacket(buf,buf.length, InetAddress.getByName(tfIP.getText()),3000); //傳送訊息 ds.send(dp); }catch(Exception ex){ ex.printStackTrace(); } tfData.setText(""); } }); //關閉視窗的觸發事件,關閉ds addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ ds.close(); dispose(); System.exit(0); } }); } public static void main(String[] args){ //初始化視窗 Chat chat = new Chat(); chat.setSize(300,400); chat.setTitle("即時通訊"); chat.setVisible(true); chat.setResizable(false); } }
相關推薦
Socket網路程式設計(二)UDP協議實現聊天工具
package UDP_chat; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.List; import java.awt.Panel; import java.awt.TextField; import jav
python------Socket網路程式設計(二)粘包問題
一.socket網路程式設計 粘包:服務端兩次傳送指令在一起,它會把兩次傳送內容合在一起傳送,稱為粘包,從而出現錯誤。 解決方法:(比較low的方法) 有些需要實時更新的,用sleep有延遲,不能這樣解決問題。 解決方法之高階方法: 客戶端: 二.傳送檔案 ftp s
Python Socket網路程式設計(二)區域網內和區域網與廣域網的持續通訊
目錄 前言 IP地址 簡介 公有IP 私有IP 區域網之間網路通訊 前提 功能描述
Windows網路程式設計(二):Socket簡介
Socket簡介 Socket被稱為套接字,描述了IP和埠等資訊,是一個通訊鏈的控制代碼。 微軟專門開發了一套支援多種網路協議的網路程式設計介面,叫做Winsock,Winsock是Windos SDK的一部分,全稱Windows Sockets API。它對多種協議做了封裝,S
Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項
Socket網路程式設計(1) ———— 基於TCP協議的客戶-伺服器socket例項 1、TCP網路程式設計架構 2、程式碼段 伺服器: #include <stdio.h> #include <stdlib.h&
C#網路程式設計(二)------多執行緒socket例項
伺服器端程式碼: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using Sys
網路程式設計(二)——伺服器和客戶端資訊的獲取
目錄 1、字串IP地址和二進位制IP地址結構的轉換 2.套接字檔案描述符的判定 3、IP地址與域名之間的相互轉換 4、協議名稱處理函式 1、字串IP地址和二進位制IP地址結構的轉換 #include <sys/socket.h> #inclu
Python Socket網路程式設計(一)初識Socket和Socket初步使用
目錄 前言 網路程式設計 實質 IP地址和埠 資料傳輸協議 協議 Socket
Socket網路程式設計(一)
此文使用的協議是 TCP 首先要寫入以下程式碼,不然很多函式都用不了 #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") ●伺服器端  
網路程式設計(二)---------------------------套接字詳解
前文有介紹,網路資料的傳輸是通過套接字來實現的,套接字共有3種類型:流式套接字(SOCK_STREAM),資料報套接字(SOCK_DGRAM)和原始套接字(RAW)。在本文中將蛀牙介紹流式套接字與資料包套接字、 一、流式套接字 流式套接字是面向連線的,提供雙
Java粗淺認識-網路程式設計(二)
單執行緒模型 服務端繫結一個埠,然後接收請求,每次請求就處理,後續請求進來時,等待之前的任務處理完成,如果任務處理非常快,也是不會有明顯阻塞的。 單執行緒模型服務端程式碼 展示檔案上傳後處理邏輯,在一個while(true)中阻塞等待accept,由於是演示網路通訊,這裡的檔案I/O快取
Android網路程式設計(二)ConnectivityManager和NetworkInfo詳解
一. ConnectivityManager詳解 概要 ConnectivityManager是網路連線相關的管理器,它主要用於查詢網路狀態並在網路發生改變時發出狀態變化通知。這個類主要負責的下列四個方面: 1. 監控網路狀態(包
Android網路程式設計(一)HTTP協議原理
1.HTTP簡介 HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。 HTTP協議的主要特點 支援C/S(客戶/伺服器)模式。簡單快速:客戶向伺服器請求服
網路程式設計(二)SOAP, WSDL, Web Service
上篇文章講到了,使用網上一個工具WSDL2ObjC.app來把已有的 wsdl轉化為ios可使用的程式碼, 然後通過這部分程式碼進行soap的請求與獲取響應。 但是上面這種方式的劣勢也不言自明, 所以下面將用最原始的方式來做同樣的事情。 這裡首先需要感謝的提供這個網站供使用
Socket 基礎程式設計(二)
在上一篇部落格中,我們總結了基本的Socket C/S結構的用法。但該例項僅僅限於1vs1的C/S互動中,當我們需要處理多對一的互動時,伺服器就必須支援併發處理。 我們知道在伺服器accept函式收到建聯請求後,會反饋一個新的fd用於與客戶端互動,此時通常我們
Java WebSocket程式設計(二):WebSocket實現主動推送互動
WebSocket協議 WebSocket協議通訊機制 WebSocket協議是獨立的、基於TCP的協議。其本質是先通過HTTP/HTTPS協議進行握手後建立一個用於交換資料的TCP連線,此後伺服器端與客戶器端通過此TCP連線進行實時通訊。 WebSocket開啟握手
網路程式設計(三)---- MFC 仿QQ聊天軟體
今天來八一八,MFC的SOCKET 程式設計,利用CSocket實現一個基於TCP實現一個QQ聊天程式。你會發現,MFC要比WIN32 簡單的多。但是如果你不理解具體API socket基礎知識,你可能會覺得有一點費解。 所以在開始之前 我還是請大家先看看http://bl
java網路程式設計:12、基於UDP的socket程式設計(二)程式碼通訊-簡單例項
宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於UDP伺服器端程式的編寫 二、基於UDP客戶端程式的編寫 三、系列文章(java網路程式設計) 通過上篇文章瞭解了基於UDP通訊的理論、基本步驟以及它跟TCP的區別
java網路程式設計:9、基於TCP的socket程式設計(二)伺服器端迴圈監聽接收多個客戶端_多執行緒伺服器程式
宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、核心程式碼編寫 1、伺服器端程式的編寫 2、客戶端程式的編寫 3、測試列印輸出 二、系列文章(java網路程式設計) 上篇講了基於tcp的程式設計的一些基礎知識
網絡編程(二)——TCP協議、socket
cep 數據請求 b- aps pre alt 技術分享 隱藏 可靠 TCP協議與socket套接字 一、TCP協議 1、可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必