public SocketClient()
{
Active = false;
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
public bool Connect(string serverIP, int serverPort)
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);
try
{
socket.Connect(endPoint);
receiveThread = new Thread(new ThreadStart(ReceiveProc));
receiveThread.Start(); //开始接收数据线程
}
catch (Exception)
{}
Active = socket.Connected;
return Active;
}
这个代码里有错吗??
为什么我socket.Connect(endPoint);后Connected属性是true的。
实际上 我那个端口都没开的我用netstat -an 也看过了的 是没开的
就是会成功 怎么回事呢? 哪里错了。
{
Active = false;
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
public bool Connect(string serverIP, int serverPort)
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(serverIP), serverPort);
try
{
socket.Connect(endPoint);
receiveThread = new Thread(new ThreadStart(ReceiveProc));
receiveThread.Start(); //开始接收数据线程
}
catch (Exception)
{}
Active = socket.Connected;
return Active;
}
这个代码里有错吗??
为什么我socket.Connect(endPoint);后Connected属性是true的。
实际上 我那个端口都没开的我用netstat -an 也看过了的 是没开的
就是会成功 怎么回事呢? 哪里错了。
tempSocket =
new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
http://msdn.microsoft.com/zh-cn/library/system.net.ipendpoint(VS.80).aspx
参数
ipString
类型:System..::.String包含 IP 地址(IPv4 使用以点分隔的四部分表示法,IPv6 使用冒号十六进制表示法)的字符串。 返回值
类型:System.Net..::.IPAddress一个 IPAddress 实例。MSDN上说的。。完全按照要求的啊。
你这是客户端,
当服务端打开监听后,客户端连接服务端端口,并产生一个新的socket,port为任意未被占用的端口,
IP,PORT是服务端的地址 和 监听的端口 呀
难道不是这样连吗?
(2,传输数据)服务端与客户端生成另一个socket,并各开一个端口(不是原port)监听,对话
通过connect后的connected判断。。
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
byte [] tmp = new byte[1]; client.Blocking = false;
client.Send(tmp, 0, 0);//我执行的时候这里出错。好象需要异步什么的。
Console.WriteLine("Connected!");
}
catch (SocketException e)
{
// 10035 == WSAEWOULDBLOCK
if (e.NativeErrorCode.Equals(10035))
Console.WriteLine("Still Connected, but the Send would block");
else
{
Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
}
}
finally
{
client.Blocking = blockingState;
} Console.WriteLine("Connected: {0}", client.Connected);
把上面client.Blocking = true;就可以了。
难道MSDN会错,我想这不大可能,所以该是我错了。。
请指点下。。
如果你socket.Connect(endPoint)成功后,Connected的属性当然是true了2.实际上 我那个端口都没开的我用netstat -an 也看过了的 是没开的
就是会成功 怎么回事呢? 哪里错了。
如果你查看的"端口"是endPoint的端口,那是服务器端的端口号,你客户端应该是没有开的了,客户端是随机生成的一个端口号连接endPoint的MSDN上的代码写了个判断。。竟然执行错误 I don't konwn.