ソケットプログラミングについての心得

2595 ワード

明らかに、socketプログラミングには、c/sモードが必要である.すなわち、サーバプログラムとクライアントプログラムとの間の通信が必要である.c#ではsystemを参照する必要があります.Netはsocketクラスを参照します.システムを参照net.ネットワークストリームを使用するsockets
では、どうやって通信しますか?もしあなたがsocketを使ってネットワークストリームの形式で通信しているならば、私たちはまず握手の過程を実現しなければなりません.互いに相手を感知しロックすることができる.これにより、データのインタラクションが可能になります.握手コードは次のとおりです.
sever:
 //            (          )
            //Any                    
           private IPEndPoint IPP = new IPEndPoint(IPAddress.Any, 65535);//IPAddress.any      ip  
           private Socket  socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//  socket     
            socket.Bind(IPP);//  (  )  
             socket.Listen(0);//0        
             
              private Socket Clinet=socket.Accept();//       

Clinet:
 try
            {
                //textbox1.txt   ,  (   )ip  ,textbox2.text        ,                
                IPP = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));
                
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(IPP);//       
             
          
            }
            catch
            {
                MessageBox.Show("        ");
            }

単語socketの意味はコンセントの意味です.私はこのように理解しています.実現するには、両者の通信を実現するには、サーバーの向こうにコンセントを構築する必要があります.soket_sever.もちろん、このソケットにはローカルサーバに関する情報(ip,port)が含まれている必要があります.そうしないと、役に立たないソケットになります.クライアントの側には、別のソケット、ソケット_clinetを構築する必要があります.相手の(ip,port).socket_severはローカル情報をバインドしているため、クライアント上のsocket_clinetが招待できる限り、握手を実現している.この2つのコンセントに1本の線を接続していると理解できる(ネットワークストリーム).これにより、データの読み書きを行うことができます.データのインタラクションを実現します.
ストリームにデータを書く方法と、データを読む方法について.もう一つのネーミングスペースが使われます
using system.Net.sockets;
NetworkStream nstream=new NetworkStream(clientSocket);//    ( )          
//           
byte[] datasize=new byte[4];
nstream.Read(datasize,0,4);
int size=BitConverter.ToInt32(datasize,0);
Byte[] message=new byte[size];
int dataleft=size;
while(dataleft>0){
int recv=nstream.Read(meassage,start,dataleft);
start+=recv;
dataleft-=recv;
}
//         
byte[] datasize=new byte[4];
datasize=BitConverter.GetBytes(i);//i           。
byte [] sendbytes=Encoding.Unicode.GetBytes(str);//str        
NetworkStream nstream=new NetworkStream(clientSocket);
nstream.Write(datasize,0,4);//            
nstream.Write(sendbytes,0,sendbytes.Length);//           ,        .
nstream.Flush();

これは私が最近の初歩的な接触、socketソケット、TCP/IPプログラミングの概念に対する理解です.前期はコンセントを構築し,握手を実現し,後期はネットワークストリームの読み書き操作である.