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.Threading;
using System.Net;
using System.Net.Sockets;namespace rsyncty
{
public partial class Form1 : Form
{
Socket serverSocket;
Thread thread;
public Form1()
{
InitializeComponent();
} private void Listen_Click(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(BeginListen));
thread.Start();
}
private static IPAddress GetServerIP()
{
IPHostEntry ieh = Dns.GetHostByName(Dns.GetHostName());
return ieh.AddressList[0];
}
private void BeginListen()
{
IPAddress ServerIP = GetServerIP();
IPEndPoint iep = new IPEndPoint(ServerIP, 8000);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Udp);
byte[] byteMessage = new byte[100];
serverSocket.Bind(iep);
while (true)
{
try
{
serverSocket.Listen(5);
Socket newSocket = serverSocket.Accept();
newSocket.Receive(byteMessage);
string msg = newSocket.RemoteEndPoint.ToString() + Encoding.Default.GetString(byteMessage);
txtMessage.Text += msg;
}
catch (SocketException ee)
{
//label1.Text = "error!!";
}
}
}
}
}
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.Threading;
using System.Net;
using System.Net.Sockets;namespace rsyncty
{
public partial class Form1 : Form
{
Socket serverSocket;
Thread thread;
public Form1()
{
InitializeComponent();
} private void Listen_Click(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(BeginListen));
thread.Start();
}
private static IPAddress GetServerIP()
{
IPHostEntry ieh = Dns.GetHostByName(Dns.GetHostName());
return ieh.AddressList[0];
}
private void BeginListen()
{
IPAddress ServerIP = GetServerIP();
IPEndPoint iep = new IPEndPoint(ServerIP, 8000);
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Udp);
byte[] byteMessage = new byte[100];
serverSocket.Bind(iep);
while (true)
{
try
{
serverSocket.Listen(5);
Socket newSocket = serverSocket.Accept();
newSocket.Receive(byteMessage);
string msg = newSocket.RemoteEndPoint.ToString() + Encoding.Default.GetString(byteMessage);
txtMessage.Text += msg;
}
catch (SocketException ee)
{
//label1.Text = "error!!";
}
}
}
}
}
解决方案 »
- 请教:C#winform中DATAGRID,如果在表格最后一列放如两个以上的LinkLabel,并添加单击事件
- DataGridView显示数据
- C# 对同一页面内所有同类控件整体操作的问题
- NUnit 中不支持定义测试基类么?(急)
- 如何在VC2005中将文本文件写入到数据集,并让他显示在界面DataGridView中显示文本文件中的数据
- 一个SQL语句的问题
- 关于编码格式问题
- 如何把字符串中的数字转换成整型。我在MSDN中找了很久
- 关于线程池里面的线程终止问题....
- 一个困扰我很久的问题,谢谢大家了!!!!!来帮我一下!!
- Application has generated an exception that could not be handle 错误怎么解决
- .net 2005 画图问题
死机可能原因:
Socket使用ProtocolType.Udp协议类型时要SocketType.Dgram
其次vs2005不支持子线程调用UI线程,所以txtMessage.Text += msg; 会报错。
另外Udp不需要listen的!!這段代碼你可以把把ProtocolType.Udp改成ProtocolType.Tcp。txtMessage.Text += msg;
--------------------
這行代碼要利用委托實現,必須在創建控件的線程訪問控件。