1. 程式人生 > >網路程式設計UDP多執行緒聊天室

網路程式設計UDP多執行緒聊天室

面向無連線,發資料之前不需要連結,將資料打包過後傳送資料,如果地址沒找到就把包丟棄,分為傳送端和接收端
1、將資料及源和目的封裝成資料包中,不需要建立連線
2、每個資料包的大小在限制64k內
3、因為連線,是不可靠協議
4、不需要建立連線,速度快
聊天工具udp協議
步驟:
傳送端:
1、定義sockte服務
2、提供資料並將資料封裝到資料包
3、通過sockte的send方法將資料包傳送出去
接收端:
1、定義sockte服務並監聽埠
2、定義一個數據包,用於接收儲存接受到的資料
4、通過資料包功能將這些不同資料取出
/*
 * udp實現網路聊天
 * 使用多執行緒實現一個控制接收一個控制傳送*/

class Send implements Runnable{
	private DatagramSocket ds;
	Send(DatagramSocket ds){
		this.ds = ds;
	}
	public void run() {
		try {
			
			BufferedReader br = 
					new BufferedReader(new InputStreamReader(System.in));
			String len=null;
			while((len=br.readLine())!=null){
				if(len.equals("end"))
				break;
				byte[] buf = len.getBytes();
				DatagramPacket pac = 
						new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.2.255"), 10003);
				ds.send(pac);
			}
		} catch (Exception e) {
			throw new RuntimeException("傳送異常");
		}
	}
}
class recev implements Runnable{
	private DatagramSocket rds ;
	public recev(DatagramSocket rds) {
		this.rds = rds;
	}
	public void run() {
		try {
			while(true){
				byte[] buf = new byte[1024];
				DatagramPacket rdpk = new DatagramPacket(buf, buf.length);
				rds.receive(rdpk);
				String ip = rdpk.getAddress().getHostAddress();
				String count = new String(rdpk.getData(), 0, rdpk.getLength());
				int port = rdpk.getPort();
				System.out.println("來自:"+ip+"埠:"+port+"資訊:"+count);
			}
		} catch (Exception e) {
			throw new RuntimeException("接收異常");
		}
	}
	
}
public class Thred_UDP {
	
	public static void main(String[] args) throws Exception{
		DatagramSocket sds = new DatagramSocket();
		DatagramSocket rds = new DatagramSocket(10003);
		Send send = new Send(sds);
		recev recev = new recev(rds);
		Thread sendtThread = new Thread(send);
		Thread recevThread = new Thread(recev);
		sendtThread.start();
		recevThread.start();
	}

}
---------------------- ASP.Net+Android+IOS開發.Net培訓、期待與您交流! ----------------------


相關推薦

網路程式設計UDP執行聊天

面向無連線,發資料之前不需要連結,將資料打包過後傳送資料,如果地址沒找到就把包丟棄,分為傳送端和接收端 1、將資料及源和目的封裝成資料包中,不需要建立連線 2、每個資料包的大小在限制64k內 3、因為連線,是不可靠協議 4、不需要建立連線,速度快 聊天工具udp協議 步驟:

網路程式設計執行的應用--基於socket udp編寫一個簡單聊天程式

void CChatDlg::OnBnClickedButtonSend() {// TODO: Add your control notification handler code here//獲取對方IPCIPAddressCtrl* pIPAddress = ((CIPAddressCtrl*)GetD

Java網路程式設計4.UDP網路程式設計執行優化

UDP網路程式設計之多執行緒優化——DatagramSocket類 1、UDP網路程式設計之多執行緒優化的思想 (1)一個執行緒實現客戶端——傳送資料 (2)一個執行緒實現伺服器端——接收資料

銀行業務系統(c/s架構、socket網路程式設計執行

1、功能要求 包括兩類使用者:管理人員和普通使用者(本文只寫了普通使用者程式) 普通使用者功能:登入登出、存取款、轉賬、查詢餘額 2、技術要求 要求用到多程序多執行緒 要求同時允許多個使用者操作(因為沒有註冊賬號功能,且只初始化了兩個賬號資訊,所以同時只能允許兩個賬號線上)

網路程式設計三---執行/程序解決併發問題

#include <netinet/in.h> #include <sys/socket.h> #include <errno.h> #include <stdio.h> #include <string.h> #include <unistd

linux 執行聊天

(1)linux下使用多執行緒編寫的聊天室 https://www.cnblogs.com/Newdawn/p/5509687.html (2)基於TCP的聊天室 https://blog.csdn.net/weixin_41413441/article/details/80156696

Android網路程式設計執行程式設計

Android對網路程式設計提供3中介面,即:Java介面,Apache介面,Android介面。 -- Android三種網路通訊方式/網路通訊機制:  1.標準Java介面 java.net.*提供與聯網有關的類,包括流、資料包套接字(socket)、Internet協

socket網路程式設計執行阻塞IO例項

先介紹一下網路層次結構、socket與TCP/UDP之間的關係。同步、非同步,阻塞、非阻塞的區別。 網路由下往上分為物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。 IP 協議對應於網路層,TCP協議對應於傳輸層,HTTP協議對應於應用層,三者從本質上來說沒有可

Java網路程式設計執行Client-Server

前面廢話過了,現在就直接看程式碼吧! ThreadedClient.java package exercise01; import java.io.*; import java.net.*; public class ThreadedClient { privat

Python網路程式設計執行

多執行緒 多執行緒舉例: import threading from time import sleep,ctime def sing(): for i in range(3): print("正在唱歌...%d"%i)

Linux 下 C 網路程式設計執行通訊 例項

簡單示例,有不對的地方,歡迎指點。 伺服器端 /* ============================================================================ Name : sockThreadServer

網路程式設計執行程序的區別

1、程序:子程序是父程序的複製品。子程序獲得父程序資料空間、堆和棧的複製品。2,執行緒:相對與程序而言,執行緒是一個更加接近與執行體的概念,它可以與同進程的其他執行緒共享資料,但擁有自己的棧空間,

網路程式設計執行——GIL全域性直譯器鎖

網路程式設計之多執行緒——GIL全域性直譯器鎖 一、引子 定義: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python b

TCP/IP網路程式設計 基於Linux程式設計_4 --執行伺服器端的實現

執行緒基本概念 前面我們講過多程序伺服器,但我們知道它開銷很大,因此我們才引入執行緒,我們可以把它看成是一種輕量級程序。它相比程序有如下幾個優點: 執行緒的建立和上下文切換開銷更小且速度更快。 執行緒間交換資料時無需特殊技術。 程序:在作業系統構成

併發程式設計執行執行安全

什麼是執行緒安全? 為什麼有執行緒安全問題? 當多個執行緒同時共享,同一個全域性變數或靜態變數,做寫的操作時,可能會發生資料衝突問題,也就是執行緒安全問題。但是做讀操作是不會發生資料衝突問題。 案例: 需求現在有100張火車票,有兩個視窗同時搶火車票,請使用多執行緒模擬搶票效果。 p

併發程式設計執行基礎

執行緒與程序區別 每個正在系統上執行的程式都是一個程序。每個程序包含一到多個執行緒。執行緒是一組指令的集合,或者是程式的特殊段,它可以在程式裡獨立執行。也可以把它理解為程式碼執行的上下文。所以執行緒基本上是輕量級的程序,它負責在單個程式裡執行多工。通常由作業系統負責多個執行緒的排程和執行。

java併發程式設計一一執行之間通訊(一)

1.多執行緒之間如何實現通訊 多執行緒之間通訊,其實就是多個執行緒在操作同一個資源,但是操作的動作不同。 1.1什麼是多執行緒之間通訊? 需求:第一個執行緒寫入(input)使用者,另一個執行緒讀取(out)使用者。實現讀一個,寫一個操作。 1.2多執行緒之間通訊需求?

java併發程式設計一一執行執行安全(四)

##1.java重排序 ###1.1資料依賴性 如果兩個操作訪問同一個變數時,且這兩個操作匯中有一個為寫操作,此時這兩個操作之間就 存在資料依賴性。資料依賴分下列三種類型。 名稱 程式碼示例 說明

java併發程式設計一一執行執行安全(三)

1.多執行緒的三大特性 1.1什麼是原子性 即一個操作或多個操作要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。 一個很經典的例子就是銀行賬戶轉賬問題: 比如從賬戶A向賬戶B轉1000元,那麼必然包括2個操作:從賬戶A減去1000元,往賬戶B加上1000元。這2

java併發程式設計一一執行執行安全(二)

1.多執行緒死鎖 1.1什麼是多執行緒死鎖? 同步中巢狀同步,導致鎖無法釋放 程式碼示例: class Thread009 implements Runnable { private int trainCount = 100; private Object