问下,C#socket是怎么给客户端发送数据的?

ruolins 2013-08-11 11:37:08

public void Send(byte[] buffer)
{
try
{
//目标地址
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3001);
//发送通信socket
Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sk.Connect(ip);//连接
sk.Send(buffer);//发送
SocketUser su = new SocketUser();
su.CurrentSocket = sk;
su.DataBuffer = buffer;
//异步接收
asyncCallBack = new AsyncCallback(OnDataReceived);
sk.BeginReceive(su.DataBuffer, 0, su.DataBuffer.Length, SocketFlags.None, asyncCallBack, su);

}
catch (Exception ex)
{
string msg = ex.ToString() + " " + DateTime.Now.ToString();
// logger.Debug(msg);
}
}



这个是我的C#服务端的代码,客户端是flash做的,我想问的是是不是C#在给flash发送的时候是怎么记录他的端口号和ip的。难道是定义一个全局变量。等flash发送数据过来的时候把这个用户的userid,和ip。端口记录下来,等处理好了,发送给flash的时候,在根据userid 把这个取出来????
...全文
192 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruolins 2013-08-11
  • 打赏
  • 举报
回复
不知道我的想法是不是有问题。
  • 打赏
  • 举报
回复
做为服务器端,当客户端访问的时候(Accept+Receive),就能得到客户端socket了,如果你想打印RemoteEndpoint也没有问题。而你这些代码,你的一大堆问题,反而是繁琐和冗余的。这种自找的烦恼,根本原因就是你把客户端叫做服务器端,完全是本末倒置了。
  • 打赏
  • 举报
回复
请你搞懂概念,明白什么叫做客户端,什么叫服务器端。 你这个代码是客户端代码。 而服务器端是bind本地端口,然后等客户端登录之后才会使用它登录的那个通道(socket)来推送消息。这才是服务器端。 如果连“什么是客户端,什么是服务器端”都没有分清楚,这是不应该的!
tcmakebest 2013-08-11
  • 打赏
  • 举报
回复
连接成功后,Socket 对象中就有客户端的IP和端口信息,返回数据直接通过 Socket 发送就可以了。 sk.RemoteEndPoint as IPEndPoint

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧