C 利用組播實現網路會議室功能(即群聊功能)

2021-06-09 00:27:51 字數 2671 閱讀 9216

c#利用組播實現**功能

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.windows.forms;

//新增的命名空間引用

using system.net;

using system.net.sockets;

using system.threading;

namespace netmeetingexample

; private delegate void setlistboxitemcallback(

listbox listbox, string text, listboxoperation operation);

setlistboxitemcallback listboxcallback;

//使用的ip位址

private ipaddress brodercastip = ipaddress.parse("224.100.0.1");

//使用的接收埠號

private int port = 8001;

private udpclient udpclient;

public formmeeting()

private void setlistboxitem(listbox listbox, string text, listboxoperation operation)

else

}else

listbox.selectedindex = listbox.items.count - 1;

listbox.clearselected();

}else if (operation == listboxoperation.removeitem)}}

private void formmeeting_load(object sender, eventargs e)

//單擊進入會議室按鈕觸發的事件

private void buttonlogin_click(object sender, eventargs e)

/// /// 接收執行緒

///

private void receivemessage()

]進入。", remote.address), listboxoperation.additem);

setlistboxitem(listboxaddress,

remote.address.tostring(), listboxoperation.additem);

string userliststring = "list," + remote.address.tostring();

for (int i = 0; i < listboxaddress.items.count; i++)

sendmessage(remote.address, userliststring);

break;

case "list": //參加會議人員名單

for (int i = 1; i < splitstring.length; i++)

break;

case "message": //發言內容

setlistboxitem(listboxmessage,

string.format("說:", remote.address, str.substring(8)),

listboxoperation.additem);

break;

case "logout": //退出會議室

setlistboxitem(listboxmessage,

string.format("退出。", remote.address),

listboxoperation.additem);

setlistboxitem(listboxaddress,

remote.address.tostring(), listboxoperation.removeitem);

break;}}

catch}}

//響應回車鍵傳送訊息

private void textboxmessage_keypress(object sender, keypresseventargs e)}}

private void sendmessage(ipaddress ip, string sendstring)

catch (exception err)

finally

}//單擊退出會議室按鈕觸發的事件

private void buttonlogout_click(object sender, eventargs e)

//窗體已關閉並指定關閉原因前觸發的事件

private void form1_formclosing(object sender, formclosingeventargs e)}}

}

介面設計:

C 實現任意源組播與特定源組播

ip組播通訊需要乙個特殊的組播位址,ip組播位址是一組d類ip位址,範圍從224.0.0.0 到 239.255.255.255。其中還有很多位址是為特殊的目的保留的。224.0.0.0到224.0.0.255的位址最好不要用,因為他們大多是為了特殊的目的保持的 比如igmp協議 igmp是ip組播...

網路筆記 組播分發

形式 備註 s,g 通常用來表示最短路徑樹,或者由組播源s發往組播組g的組播報文。s 代表特定組播源,g 代表特定組播組g g 通常用來表示共享樹,或者由任意組播源發往組播組g的組播報文。代表任意組播源,g 代表特定組播組g shortest path tree,最短路徑樹,也稱為 source t...

udp組播通訊實現 c

前幾天需要做乙個和第三方平台配套的單向通訊,反向隔離的通訊介面,原本確定是採用udp組播方式實現,通訊裝置中間加正向網路隔離裝置防止反通訊。我想著趕緊先行測試驗證一下,哪知我好不容易花了乙個下午編譯測試後,對接的廠家卻反饋說不再使用udp通訊,他們要用http方式,並不考慮兩個系統通訊隔離問題。我只...