c# TCP/IP編程


  這東西很多朋友都有寫過了,我也就寫着玩玩,就當做個筆記吧。不廢話了。

  TCP/IP在數據通信中被廣泛的使用,自然得包含客戶端和服務端,當然,自己自言自語不是什么不可以,可那樣貌似有點神經。

  好了,那就先來建立服務端吧。

  1、新建一個項目,就取名叫MyServer吧,然后敲入如下代碼:

using System;
using System.Net;
using System.Net.Sockets;

namespace MyServer
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Server服務已啟動……");
            IPAddress ip = Dns.GetHostEntry("localhost").AddressList[0];

            TcpListener listener = new TcpListener(ip, 250);
            listener.Start(); // 開始偵聽

            Console.WriteLine("開始監聽……");
            Console.WriteLine("\n輸入\"Q\"鍵退出。");
            ConsoleKey key;
            do
            {
                key = Console.ReadKey(true).Key;
            }
            while (key != ConsoleKey.Q);
        }
    }
}

  好了,運行……顯示服務已啟動。

  接下來看看我們監聽的端口號250是不是已經在被監聽狀態。如下圖:

  2、好啦,一切正常。下面開始來編寫客戶端吧。

  重新打開一個VS窗口,新建項目MyClient,然后錄入如下代碼:

using System;
using System.Net.Sockets;

namespace MyClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("客戶端啟動……");
            TcpClient client = new TcpClient();
            try
            {
                //與服務器連接
                client.Connect("localhost", 250);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }
            // 打印連接到的服務端信息
            Console.WriteLine("已經成功與客戶端建立連接!{0} --> {1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);

            Console.WriteLine("\n輸入\"Q\"鍵退出。");
            ConsoleKey key;
            do
            {
                key = Console.ReadKey(true).Key;
            }
            while (key != ConsoleKey.Q);
        }
    }
}

  看起來一切都是那么清晰明了,好啦,啟動運行——沃日!沒反應?打個斷點跟蹤一下試試?

  看到那個異常了不?“由於目標計算機積極拒絕,無法連接。127.0.0.1:250”

  靠,我的目標計算機這么積極的啊?是防火牆干的好事嗎?關了——不行,一樣。端口號被占用了?不能用250?那我換2500呢?多換幾個試試……:-D:-D還是不可以的,說明沒有端口號什么事。那程序運行權限不夠?那我用管理員運行下試試——還是不行。這玩意兒真是不如WCF那么省心啊!

  好吧,我把這localhost換成IP地址試試。先通過ipconfig看看自己的IP地址是什么,額,192.168.175.1,好吧,都換了。

  服務端的IP那里換成:

  IPAddress ip = IPAddress.Parse("192.168.175.1");

  客戶端那換成:

  client.Connect(System.Net.IPAddress.Parse("192.168.175.1"), 2500);

  再運行試試,通了通了,可以了誒!看下圖:

  呵呵呵,對了,看到上圖中那兩個端口號沒?第一個來自客戶端,是由客戶端自個兒自己隨機分配的,后面那個2500就是我們監聽的服務器端的端口號(把250-->2500)

  其實TCP/IP這東西啊,服務端和客戶端,真是要在茫茫人海中,找到對方不容易啊。即使你知道她家在哪兒,而且還有她們家的鑰匙,要是你在去她們家的路上遇到個程咬金擋路,不讓你過去你也沒辦法。所以,為了能夠順利到她們家,我們就得想想其它辦法了。也就是……回頭有空的時候我再來寫一下怎么確保順利到達她們家吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM