请问,这个Socket编程,不太懂呢?
此例来自MSDN的例子:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.aspx
class Program
{
private static Socket ConnectSocket(string server, int port)
{
Socket s = null;
IPHostEntry hostEntry = null;
hostEntry = Dns.GetHostEntry(server);
foreach (IPAddress address in hostEntry.AddressList)
{
IPEndPoint ipe = new IPEndPoint(address, port);
Socket tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
tempSocket.Connect(ipe); //自己电脑和自己电脑连接?
if (tempSocket.Connected)
{
s = tempSocket;
break;
}
else
{
continue;
}
}
return s;
}
private static string SocketSendReceive(string server, int port)
{
string request = "GET / HTTP/1.1\r\nHost: " + server +"\r\nConnection: Close\r\n\r\n";
Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
Byte[] bytesReceived = new Byte[256];
Socket s = ConnectSocket(server, port);
if (s == null)
return ("Connection failed");
s.Send(bytesSent, bytesSent.Length, 0);
int bytes = 0;
string page = "Default HTML page on " + server + ":\r\n";
do
{
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
while (bytes > 0);
return page;
}
public static void Main(string[] args)
{
string host;
int port = 80;
if (args.Length == 0)
host = Dns.GetHostName();
else
host = args[0];
string result = SocketSendReceive(host, port);
Console.WriteLine(result);
Console.ReadKey();
}
}
我就不懂,自己电脑怎么能和自己电脑连接啊?什么意思啊?
------解决方案--------------------端口,自己电脑没错,但是程序中有server和client的概念。 通过Port进行通讯
------解决方案--------------------服务器和客户端是两个程序!囧!
------解决方案--------------------我理解是:在自己机器上的服务器程序和客户端程序相连的意思
------解决方案--------------------可以和本机连接,但是不能设置成127.0.0.1,要设成真正的IP地址。而且要注意服务端和客户端的端口号必须一致。
------解决方案--------------------是两个程序(Socket客户端和服务端)之间的通信,而不是写在一个程序里。
------解决方案--------------------socket不等价与你的电脑或者你的程序,一个电脑(或一个程序)可以有很多socket,一个socket包括ip和端口(port),只要端口不一样你的电脑就可以把socket区分开来(端口复用还可以达到多个socket共用一个端口port),tempsocket.Connect(ipe)就是用你这个tempsocket通过tcp连接另一个已监听的socket,所以socket连接只是两个socket之间的连接,而不是两个电脑之间的连接,虽然大都数情况都是用于不同电脑间的通讯。去看看tcp/ip五层协议吧
------解决方案--------------------你给的只是客户端代码,缺少服务端代码,要2个项目一起开启才能测试效果。
------解决方案--------------------