刚开始学,还不能理解socket中的Tcp和Udp的区别和分布的连接方式,希望哪位大虾能够帮我把下面的这个TCP连接换成udp连接,谢谢。
private void StartReceive()
{
//创建一网络端点,指定默认连接端口为8484
IPEndPoint serveripendpoint = new IPEndPoint(IPAddress.Any,int.Parse("8484"));
//创建套接字
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//绑定套接字到端口
//server.Bind(serveripendpoint);
////监听并阻塞
//server.Listen(8484);
TcpListener listen = new TcpListener(serveripendpoint);
try
{
listen.Start();
MessageBox.Show("接收端准备好接收文件了!");
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
Socket client = listen.AcceptSocket();
//创建发送端节点
IPEndPoint clientipendpoint = (IPEndPoint)client.RemoteEndPoint;
//文件名
string SendFileName = Encoding.Unicode.GetString(ReceiveVarData(client));
//包大小
string bagSize = Encoding.Unicode.GetString(ReceiveVarData(client));
//预期接收的包数量
int bagCount = int.Parse(Encoding.Unicode.GetString(ReceiveVarData(client)));
//最后一个包的大小
string bagLast = Encoding.Unicode.GetString(ReceiveVarData(client));
//将文件写入到bin/debug文件夹下面(默认)
FileStream myfile = new FileStream(SendFileName,FileMode.Create,FileAccess.Write);
//已接收包的数量
int SendedCount = -1;
while(true)
{
byte[] data = ReceiveVarData(client);
if (data.Length == 0)
{
break;
}
else
{
//将收到的数据包写入到刚刚创建的文件流对象myfile中
myfile.Write(data,0,data.Length);
SendedCount=SendedCount+1;
}
}
/*关闭文件流和套接字*/
MessageBox.Show("接收完成!");
myfile.Close();
listen.Stop();
client.Close();
//将接受到得文件信息绑定到dgv中
this.dgv_AcceptFileDetail.Rows.Add(bagSize, clientipendpoint.Address, SendedCount, SendFileName, bagCount, bagLast);
} //关闭
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void StartReceive()
{
//创建一网络端点,指定默认连接端口为8484
IPEndPoint serveripendpoint = new IPEndPoint(IPAddress.Any,int.Parse("8484"));
//创建套接字
Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//绑定套接字到端口
//server.Bind(serveripendpoint);
////监听并阻塞
//server.Listen(8484);
TcpListener listen = new TcpListener(serveripendpoint);
try
{
listen.Start();
MessageBox.Show("接收端准备好接收文件了!");
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
Socket client = listen.AcceptSocket();
//创建发送端节点
IPEndPoint clientipendpoint = (IPEndPoint)client.RemoteEndPoint;
//文件名
string SendFileName = Encoding.Unicode.GetString(ReceiveVarData(client));
//包大小
string bagSize = Encoding.Unicode.GetString(ReceiveVarData(client));
//预期接收的包数量
int bagCount = int.Parse(Encoding.Unicode.GetString(ReceiveVarData(client)));
//最后一个包的大小
string bagLast = Encoding.Unicode.GetString(ReceiveVarData(client));
//将文件写入到bin/debug文件夹下面(默认)
FileStream myfile = new FileStream(SendFileName,FileMode.Create,FileAccess.Write);
//已接收包的数量
int SendedCount = -1;
while(true)
{
byte[] data = ReceiveVarData(client);
if (data.Length == 0)
{
break;
}
else
{
//将收到的数据包写入到刚刚创建的文件流对象myfile中
myfile.Write(data,0,data.Length);
SendedCount=SendedCount+1;
}
}
/*关闭文件流和套接字*/
MessageBox.Show("接收完成!");
myfile.Close();
listen.Stop();
client.Close();
//将接受到得文件信息绑定到dgv中
this.dgv_AcceptFileDetail.Rows.Add(bagSize, clientipendpoint.Address, SendedCount, SendFileName, bagCount, bagLast);
} //关闭
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货