這是我的程序的服務器代碼,它正在工作,但是在它發送數據後它就卡住了。我需要刷新它並準備好再次發送數據。客戶端和服務器之間的UDP連接
Server代碼:
private void button1_Click(object sender, EventArgs e) {
try {
String text = textBox1.Text;
UdpClient udpc = new UdpClient(text,8899);
IPEndPoint ep = null;
while (true) {
MessageBox.Show("Name: ");
string name = textBox2.Text;
if (name == "") break;
byte[] sdata = Encoding.ASCII.GetBytes(name);
udpc.Send(sdata, sdata.Length);
if (udpc.Receive(ref ep)==null) {
MessageBox.Show("Host not found");
} else {
byte[] rdata = udpc.Receive(ref ep);
string job = Encoding.ASCII.GetString(rdata);
MessageBox.Show(job);
}
}
} catch {
MessageBox.Show("Error Restarting");
}
客戶端代碼:
private void button1_Click(object sender, EventArgs e) {
try {
UdpClient subscriber = new UdpClient(8899);
IPAddress addr = IPAddress.Parse("127.0.0.2");
subscriber.JoinMulticastGroup(addr);
IPEndPoint ep = null;
for (int i = 0; i < 1; i++) {
byte[] pdata = subscriber.Receive(ref ep);
string strdata = Encoding.ASCII.GetString(pdata);
MessageBox.Show(strdata);
textBox1.Text = strdata;
pass = strdata;
}
subscriber.DropMulticastGroup(addr);
} catch {
Refresh();
MessageBox.Show("Not Found");
}
}
服務器可以將數據發送到一個客戶端。 我想一次發送一個客戶端。但發送數據後,服務器卡住了。
我需要它刷新並重新發送數據給客戶端。
你是什麼意思:它卡住了?是否有錯誤或掛起? – TimVK
我無法訪問按鈕和任何我必須通過任務管理器關閉它 – user1713389
您正在等待響應,但UDP無狀態和數據接收不能保證,所以如果由於任何原因它發送它,它永遠不會到達它沒有排序就像TCP ..如果你需要保證交付,你需要TCP – BugFinder