Сокеты

В борландовых делфях и с++ были сокетовые компоненты, и всязь клиент-сервер довольно просто осуществлялась...на шарпе чето сколько чего не читал никак не могу понять...кто разбирается прошу просто в кратце в виде маленького куска кода мне в пример привести 2 вещи)сокет-клиент, по указанному порту и айпишнику посылающий "шото"...сокет-сервак, принимающий "шото",обрабатывающий, посылающий обатно..ну например клиент посылает цыфру серву, серв умножает ее на 2 и посылает обратно, и в клиенте просто какойнить переменной присваивается полученный ответ...заранее благодарен..
4 ответа

http://msdn.microsoft.com/en-us/library/sy...ets.socket.aspxТам есть нужный вам пример.


спасибо, но к сожалению,по непонятной мне причине, у меня не открываются сайты msdn и microsoft...вероятно вирус, хотя перестали открываться после того,как переставил винду)даже не пингуются...так что буду очень признателен если ктонить скопипастит это сюда))


так что буду очень признателен если ктонить скопипастит это сюда
using System;using System.Text;using System.IO;using System.Net;using System.Net.Sockets;public class GetSocket{    private static Socket ConnectSocket(string server, int port)    {        Socket s = null;        IPHostEntry hostEntry = null;        // Get host related information.        hostEntry = Dns.GetHostEntry(server);        // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid        // an exception that occurs when the host IP Address is not compatible with the address family        // (typical in the IPv6 case).        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;    }    // This method requests the home page content for the specified server.    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];        // Create a socket connection with the specified server and port.        Socket s = ConnectSocket(server, port);        if (s == null)            return ("Connection failed");        // Send request to the server.        s.Send(bytesSent, bytesSent.Length, 0);          // Receive the server home page content.        int bytes = 0;        string page = "Default HTML page on " + server + ":\r\n";        // The following will block until te page is transmitted.        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)            // If no server name is passed as argument to this program,             // use the current host name as the default.            host = Dns.GetHostName();        else            host = args[0];        string result = SocketSendReceive(host, port);         Console.WriteLine(result);    }}


для избежания мороки с сокетами в .НЕТ есть презамечательнейшие вещи: UdpClient & TcpClient. С ними работать ГораздО проще, нежели с голыми сокетами. Хотя суть у них та же: подвешиваются на определенные IPEndPoint'ы и занимаются Send/Receive