下面是我用sockets接受信息的代码;但每次运行到Socket temp = s.Accept();//为新建连接创建新的Socket就没反应了,也不报错,这是怎么回事,大家帮忙看下;using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace sever
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//WinsockSrv } private void timer1_Tick(object sender, EventArgs e)
{
try
{
int port = 2000;
//string host="127.0.0.1";
string host = "192.168.0.113";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
s.Bind(ipe);//绑定2000端口
s.Listen(0);//开始监听
Console.WriteLine("Waitforconnect");
Socket temp = s.Accept();//为新建连接创建新的Socket。 Console.WriteLine("Getaconnect");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
//Console.WriteLine("ServerGetMessage:{0}",recvStr);//把客户端传来的信息显示出来
MessageBox.Show(recvStr);
string sendStr = "Ok!ClientSendMessageSucessful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);//返回客户端成功信息
temp.Close();
s.Close();
}
catch (ArgumentNullException ee)
{
Console.WriteLine("ArgumentNullException:{0}", ee);
}
catch (SocketException ee)
{
Console.WriteLine("SocketException:{0}", ee);
}
Console.WriteLine("PressEntertoExit");
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace sever
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//WinsockSrv } private void timer1_Tick(object sender, EventArgs e)
{
try
{
int port = 2000;
//string host="127.0.0.1";
string host = "192.168.0.113";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类
s.Bind(ipe);//绑定2000端口
s.Listen(0);//开始监听
Console.WriteLine("Waitforconnect");
Socket temp = s.Accept();//为新建连接创建新的Socket。 Console.WriteLine("Getaconnect");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
//Console.WriteLine("ServerGetMessage:{0}",recvStr);//把客户端传来的信息显示出来
MessageBox.Show(recvStr);
string sendStr = "Ok!ClientSendMessageSucessful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);//返回客户端成功信息
temp.Close();
s.Close();
}
catch (ArgumentNullException ee)
{
Console.WriteLine("ArgumentNullException:{0}", ee);
}
catch (SocketException ee)
{
Console.WriteLine("SocketException:{0}", ee);
}
Console.WriteLine("PressEntertoExit");
Console.ReadLine();
}
}
}
http://blog.csdn.net/luols/archive/2010/06/29/5702441.aspx
由于目标机器积极拒绝,无法连接。
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("192.168.0.32"), 2000);
string host = "192.168.0.113";因为你这边的服务器端是这个ip和端口,所以客户端理应是:
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("192.168.0.113"), 2000);
要和服务端保持一致,因为客户端是要连到这个服务端的
还有Socket temp = s.Accept();应该放在死循环中这样才能一直接收客户端发送的东西
不然只能接收一次不能再接收啦
while(true)
{
Socket socket = listen.acceptsocket();接收信息代码
while(true)
{}
}
这样可以多次连接,否则只能连接一次,提示已经关闭连接
s.WaitOne();