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();
--------------------编程问答-------------------- 应该用一个TIMER控件测试一下这个即可
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);
}
当连接成功后,就传信息、 --------------------编程问答--------------------
这个network 不能取我监听里的stream 吗 --------------------编程问答--------------------
能具体点吗 timer测试什么 本人初学,望指教 --------------------编程问答--------------------
你这个是侦听 接收把 --------------------编程问答-------------------- --------------------编程问答-------------------- 为什么发送不出去呢 抓包也没抓到
补充:.NET技术 , C#