Mình đã sửa lại như ở dưới nhưng lisbox không được sử dụng. Không in ra message mà rõ ràng chuỗi s nhận được thông điệp gửi đến
Mã:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.Threading; namespace UDPChat{ public partial class Form1 : Form { private string s; public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = true; } private void buttonSend_Click(object sender, EventArgs e) { UdpClient send = new UdpClient(); IPEndPoint iepRemote = new IPEndPoint(IPAddress.Parse(textBoxIP.Text), int.Parse(textBoxP.Text)); byte[] data = new byte[1024]; data = Encoding.UTF8.GetBytes(textBoxSend.Text); send.Send(data, data.Length, iepRemote); listBox.Items.Add("Sender: " + textBoxSend.Text + "
"); textBoxSend.Clear(); if (textBoxSend.Text.ToUpper().Equals("bye")) this.Dispose(); } private void buttonConn_Click(object sender, EventArgs e) { Thread tuyen = new Thread(new ThreadStart(NhanDL)); tuyen.IsBackground = true; tuyen.Start(); } private void NhanDL() { UdpClient receiver = new UdpClient(int.Parse(textBoxLCP.Text)); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0); while (true) { byte[] data = new byte[1024]; data = receiver.Receive(ref iep); s = Encoding.UTF8.GetString(data); if (s.Trim().ToUpper().Equals("bye")) break; //listBox.Text += "Receiver: " + s + "
"; CrossThread(); } } private void CrossThread() { updateConversion(s); } delegate void updateConversionTextDelegate(string newText); private void updateConversion(string newText) { if (this.listBox.InvokeRequired) { // this is worker thread this.Invoke(new updateConversionTextDelegate(updateConversion), new object[] { newText }); } else { // this is UI thread this.listBox.Text += "Receiver: " + newText + "
"; } } private void labelIP_Click(object sender, EventArgs e) { } private void textBoxIP_TextChanged(object sender, EventArgs e) { } private void textBoxP_TextChanged(object sender, EventArgs e) { } private void labelPort_Click(object sender, EventArgs e) { } private void labelLCP_Click(object sender, EventArgs e) { } private void textBoxLCP_TextChanged(object sender, EventArgs e) { } private void textBoxSend_TextChanged(object sender, EventArgs e) { } public void listBox_SelectedIndexChanged(object sender, EventArgs e) { } }}
Mọi người xem giúp mình với. Hay là mình áp dụng sai hoặc có chỗ nào không đúng.
p/s: Cái này phức tạp quá. Nếu có cách không cần gọi lisbox trong phương thức NhanDL mà vẫn in ra kết quả thì các bạn giúp mình nhé
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...