private void StartListen()
{
int port = 5000;
TcpListener myTcpListener = new TcpListener(port);
myTcpListener.Start();
ReceiveSocket = myTcpListener.AcceptSocket();//监听已建立
this.Receive();
} private void Receive()
{
try
{
while (true)
{
if (ReceiveSocket.Connected)
{
NetworkStream = new NetworkStream(ReceiveSocket);
byte[] data = new byte[512];
byte[] buf = new byte[1];
buf[0] = 124;
NetworkStream.Read(data, 0, data.Length);
Msg = Encoding.UTF8.GetString(data); string Friends = Fs.getUserFriend(Convert.ToInt32(Msg));
string[] FriendArray = Friends.Split('|');
Friend.Model fm;
foreach (string D in FriendArray)
{
fm = new Friend.Model();
fm.UID = Convert.ToInt32(D);
fm.UserName = Us.getUserName(Convert.ToInt32(D));
data=Serialize.Serializer.ObjectToByte(fm);
NetworkStream.Write(data, 0, data.Length);
}
NetworkStream.Write(buf, 0, buf.Length);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}上面的代码放在StartListen.aspx.cs文件中,通过浏览器访问这个页面实现监听。但为什么会出现这种情况
{
int port = 5000;
TcpListener myTcpListener = new TcpListener(port);
myTcpListener.Start();
ReceiveSocket = myTcpListener.AcceptSocket();//监听已建立
this.Receive();
} private void Receive()
{
try
{
while (true)
{
if (ReceiveSocket.Connected)
{
NetworkStream = new NetworkStream(ReceiveSocket);
byte[] data = new byte[512];
byte[] buf = new byte[1];
buf[0] = 124;
NetworkStream.Read(data, 0, data.Length);
Msg = Encoding.UTF8.GetString(data); string Friends = Fs.getUserFriend(Convert.ToInt32(Msg));
string[] FriendArray = Friends.Split('|');
Friend.Model fm;
foreach (string D in FriendArray)
{
fm = new Friend.Model();
fm.UID = Convert.ToInt32(D);
fm.UserName = Us.getUserName(Convert.ToInt32(D));
data=Serialize.Serializer.ObjectToByte(fm);
NetworkStream.Write(data, 0, data.Length);
}
NetworkStream.Write(buf, 0, buf.Length);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}上面的代码放在StartListen.aspx.cs文件中,通过浏览器访问这个页面实现监听。但为什么会出现这种情况
解决方案 »
- 如何用Ajax异步获取目标页面的一个div里的内容?
- 用Jquery的POST数据之后获取返回值的问题
- FileUpload在客户端如何处理!顺便祝大家圣诞快乐!
- asp.net 怎样在文件里添加内容
- asp.net如何读取用户在自己的浏览器上读客户端的MAC地址?
- web项目打包的时候能否把iis打进去?或者可以让它自动进行组件更新
- http://hotels.ctrip.com/hotel/18129.html,这个页面静态的,但房型与房价这块是如何动态读出来的呢
- duwamish无法安装,修复,卸载。
- 熟悉代码授权的朋友请速进:)
- 如何统计数据
- Asp.net服务器控件开发与控件的生命周期
- 用过visio的进
{
int port = 5000;
TcpListener myTcpListener = new TcpListener(port);
myTcpListener.Start();
ReceiveSocket = myTcpListener.AcceptSocket();//监听已建立
this.Receive();
} private void Receive()
{
try
{
while (true)
{
if (ReceiveSocket.Connected)
{
NetworkStream = new NetworkStream(ReceiveSocket);
byte[] data = new byte[512];
byte[] buf = new byte[1];
buf[0] = 124;
NetworkStream.Read(data, 0, data.Length);
Msg = Encoding.UTF8.GetString(data); string Friends = Fs.getUserFriend(Convert.ToInt32(Msg));
string[] FriendArray = Friends.Split('|');
Friend.Model fm;
foreach (string D in FriendArray)
{
fm = new Friend.Model();
fm.UID = Convert.ToInt32(D);
fm.UserName = Us.getUserName(Convert.ToInt32(D));
data=Serialize.Serializer.ObjectToByte(fm);
NetworkStream.Write(data, 0, data.Length);
}
NetworkStream.Write(buf, 0, buf.Length);
ReceiveSocket.Close();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}红色部分是修改的部分,但仍然这样我的本意是在服务器端用一个socket监听所有客户端连接,一个客户端连接之后发送数据,发送完成之后继续接收下一个客户端的连接,而不是新开一个监听端口这到底要怎么弄才行?
{
try
{
int port = 2000;
string host = "127.0.0.1";
/**/
///创建终结点(EndPoint)
IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例 /**/ ///创建socket并开始监听
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字 s.Bind(ipe);//绑定EndPoint对像(2000端口和ip地址)
s.Listen(0);//开始监听
Console.WriteLine("等待客户端连接");
/**/ ///接受到client连接,为此连接建立新的socket,并接受信息
while (true)//定义循环,以便可以简历N次连接
{
Socket temp = s.Accept();//为新建连接创建新的socket
//Console.WriteLine("建立连接");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
DBHelper.ExecutCommand("INSERT INTO [ShuJu]([strs_VAR]) VALUES('" + recvStr + "')");//存入数据库
if (temp != null) temp.Close();
} /**/
///给client端返回信息
//Console.WriteLine("server get message:{0}", recvStr);//把客户端传来的信息显示出来
//string sendStr = "ok!Client send message successful!";
//byte[] bs = Encoding.ASCII.GetBytes(sendStr);
//temp.Send(bs, bs.Length, 0);//返回信息给客户端
//temp.Close();
s.Close();
//Console.ReadLine();
}
catch (Exception ex)
{
string s = ex.ToString();
} }调用
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
(new System.Threading.Thread(new System.Threading.ThreadStart( new Class1().CreatSocket))).Start();//开辟一个新线程
}