当前位置:编程学习 > C#/ASP.NET >>

C# server监听client端连接,连接成功后,直接给client发消息



try
            {
                while (true)
                {
                    if (_listener.Pending())
                    {
                        TcpClient client = _listener.AcceptTcpClient();
                        NetworkStream stream = client.GetStream();
                        Connection connection = new Connection(stream);
                        this._connections.Add(connection);
                        this.OnConnected(this, new ConnectionEventArgs(connection, new Exception("连接成功")));

                        //////////////////////////
                         string msg = "sm|350|callingnumber:8613978686868|callednumber:8613978464356|msg:E8BF99E698AFE4B880E69DA1E6B58BE8AF95E79FADE4BFA100";
                         byte[] buffer =System.Text.Encoding.UTF8.GetBytes(msg);
                         stream.Write(buffer, 0, buffer.Length);
                        ///////////////////////////////////////////
                         StreamWriter LogWriter1 = new StreamWriter("C:\\SocketService.log", true, System.Text.Encoding.GetEncoding("UTF-8"));
                         LogWriter1.Write(DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString() + "发完\n");
                         LogWriter1.Close();
                       
                    }
                   
                    System.Threading.Thread.Sleep(200);
                }
            }
            catch
            {
            }



连接成功后,随后给client发送消息 在注释间的代码,写成最原始的代码了(本来是写在线程里的,但是根本没执行),程序是执行完这几句了,但是没有发送出去。初接触socket 请帮帮忙 --------------------编程问答-------------------- 具体需求就是客户端发起连接,server端根据连接 发送字符过去, client再回消息给server端。现在server端能接收到消息。但是client连过来 必须先发送消息过去 --------------------编程问答-------------------- 注意下面 SerializeBinary 和DeSerializeBinary

#region Binary Serializers
public   System.IO.MemoryStream SerializeBinary(object request) 
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream memStream = new System.IO.MemoryStream();
serializer.Serialize(memStream, request);
return memStream;
}

public   object DeSerializeBinary(System.IO.MemoryStream memStream) 
{
  memStream.Position=0;
  System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
  object newobj = deserializer.Deserialize(memStream);
  memStream.Close();
  return newobj;
}
#endregion



//这里是将消息发送个对方
 public void sendMessageToOneUser(ClassMsg msg, System.Net.IPAddress Ip, int Port)//发送消息到用户的一个联系人
        {
            msg.ID = selfInfo.ID;//标识本人的ID号
            this.sockUDP1.Send(Ip, Port, new ClassSerializers().SerializeBinary(msg).ToArray());
        } --------------------编程问答--------------------

                TcpClient tcp = new TcpClient(chatip, chatport);
                NetworkStream network = tcp.GetStream();
                StreamWriter sw = new StreamWriter(network);
                sw.WriteLine(textBox1.Text);
                sw.Flush();
                sw.Close();
                network.Close();
--------------------编程问答--------------------



tcpListener = new TcpListener(8090);  
tcpListener.Start();         
this.listen = true;
while (listen)
{
    Socket s = tcpListener.AcceptSocket();  
    Byte[] stream = new Byte[100];                                
    int i = s.Receive(stream);                     
    message = System.Text.Encoding.UTF8.GetString(stream);                     
}
--------------------编程问答-------------------- 应该用一个TIMER控件测试一下这个即可
当连接成功后,就传信息、 --------------------编程问答--------------------
引用 3 楼 xingchen1008 的回复:
C# code

                TcpClient tcp = new TcpClient(chatip, chatport);
                NetworkStream network = tcp.GetStream();
                StreamWriter sw = new StreamWriter(network);
   ……


这个network 不能取我监听里的stream 吗 --------------------编程问答--------------------
引用 5 楼 sgzhou12345 的回复:
应该用一个TIMER控件测试一下这个即可
当连接成功后,就传信息、


能具体点吗 timer测试什么  本人初学,望指教 --------------------编程问答--------------------
引用 4 楼 tigercao101 的回复:
C# code



tcpListener = new TcpListener(8090);  
tcpListener.Start();         
this.listen = true;
while (listen)
{
    Socket s = tcpListener.AcceptSocket();  
    Byte[] stream = new Byte……


你这个是侦听 接收把 --------------------编程问答-------------------- --------------------编程问答-------------------- 为什么发送不出去呢  抓包也没抓到
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,