Socket自学笔记1

        由于TCP/Ip原理课的试验,这次认真学习了一次Socket编程,比较模式化的东西,这次使用C#先完成老师的基本要求,正好参加的软件大赛也要用上这方面的东西,所以再继续深入学习一下。
        先是做一个server端,安装socket的步骤,进行简单的消息接受和消息回复,虽然网上已经有了现成的代码,我还是敲了遍……
        sever代码:
        
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;


namespace server
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
try
            
{
                
int port = 2000;
                
string host = "127.0.0.1";
                IPAddress ip 
= IPAddress.Parse(host);
                IPEndPoint ipe 
= new IPEndPoint(ip,port);
                Socket s 
= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                s.Bind(ipe);
                s.Listen(
0);
                Console.WriteLine(
"waite for connect");
                Socket temp 
= s.Accept();
                
string recvStr = "";
                
byte[] recvBytes = new byte[1024];
                
int bytes;
                bytes 
= temp.Receive(recvBytes, recvBytes.Length, 0);
                recvStr 
+= Encoding.Unicode.GetString(recvBytes, 0, bytes);
                Console.WriteLine(
"Get Message {0}", recvStr);
                
string sendStr = "Your Message :" + recvStr;
                
byte[] bs = Encoding.Unicode.GetBytes(sendStr);
                temp.Send(bs, bs.Length, 
0);
                temp.Close();
                s.Close();
            }

            
catch (ArgumentNullException e)
            
{
                Console.WriteLine(
"ArgumentNullException :{0}", e);
            }

            
catch (SocketException e)
            
{
                Console.WriteLine(
"SocketException:", e);

            }

            Console.WriteLine(
"Press Enter to Exit");
            Console.ReadLine();


            


        }

    }

}
        client端也类似,为了能显示中文,选择了unicode方式:
        
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;


namespace client
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
try
            
{
                
int port = 2000;
                
string host = "127.0.0.1";
                IPAddress ip 
= IPAddress.Parse(host);
                IPEndPoint ipe 
= new IPEndPoint(ip, port);
                Socket c 
= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                Console.WriteLine(
"Connecting");
                c.Connect(ipe);
               
                
string sendStr = "某人是个天才!";
                
byte[] bs = Encoding.Unicode.GetBytes(sendStr);
                Console.WriteLine(
"Sending Message");
                c.Send(bs, bs.Length, 
0);
                
string recvStr = "";
                
byte[] recvBytes = new byte[1024];
                
int bytes;
                bytes 
= c.Receive(recvBytes, recvBytes.Length, 0);
                recvStr 
+= Encoding.Unicode.GetString(recvBytes, 0, bytes);
                Console.WriteLine(
"Client Get Message: {0}", recvStr);
                c.Close();
            }

            
catch (ArgumentNullException e)
            
{
                Console.WriteLine(
"ArgumentNullException: {0}", e);

            }

            
catch(SocketException e)
            
{
                Console.WriteLine(
"SocketException:{0}",e);
            }

            Console.WriteLine(
"Press Enter to Exit");
            Console.ReadLine();

            



                

        }

    }

}
        这仅仅是第一步,但基于此可以进一步进行改进,增加更多的功能……
    
posted @ 2008-05-11 10:20  魔尊年少时  阅读(275)  评论(0编辑  收藏  举报