1. 程式人生 > >C#socket建立伺服器並進行簡單通訊

C#socket建立伺服器並進行簡單通訊

注:本文為本人學習筆記,之前在蠻牛網上發表的。

發現說明甚少,不過都是比較基礎的操作,這裡就不再說明了。包括兩個.cs檔案,一個是作為伺服器端,一個是客戶端。

伺服器端程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace Csharp_socket程式設計_TCP協議
{
    class Program
    {
        static void Main(string[] args)
        {
            //socket也是一個類,位於System.Net.Sockets下面
            //1:建立一個socket
            Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //2:繫結Ip地址和埠號117.25.188.1
            IPAddress ipaddress = new IPAddress(new byte[]{117,25,190,168});
            EndPoint point = new IPEndPoint(ipaddress,7788);//IPEndPoint類是對ip埠做了一層封裝的類
            tcpServer.Bind(point);//向作業系統申請一個可用的ip地址和埠號用於通訊
            //3:開始監聽(等待客戶端的連線)
            Console.WriteLine("開始監聽");/////////
            tcpServer.Listen(100);//設定最大的連線數

            Socket ClientSocket = tcpServer.Accept();//暫停當前執行緒知道有客戶端連線進來才進行下面的程式碼,返回客戶端的socket
            Console.WriteLine("有客戶端連入");///////

            //4:使用返回的socket向客戶端傳送訊息
            string welcome = "welcome to you";
            Console.WriteLine("向客戶端傳送訊息" + welcome);///////
            byte[] str = Encoding.UTF8.GetBytes(welcome);//利用這個方法將string型轉化為byte型陣列
            ClientSocket.Send(str);//向客戶端傳送歡迎資訊

            //5:接收客戶端發來的訊息
            byte[] data = new byte[1000];
            int length = ClientSocket.Receive(data);
            string receiveMessage = Encoding.UTF8.GetString(data, 0, length);
            Console.WriteLine("收到客戶端發來的訊息:"+receiveMessage);



            Console.ReadKey();


        }
    }
}


客戶端程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace Csharp_socket程式設計_TCP協議_客戶端
{
    class Program
    {
        static void Main(string[] args)
        {
            //1:建立socket
            Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
            //2:向伺服器端傳送連線請求
            Console.WriteLine("向伺服器端傳送連線請求");//////
            IPAddress ipaddress = IPAddress.Parse("117.25.190.168");//IPAddress.Parse可以把string型別的ip地址轉化為ipAddress型
            EndPoint point = new IPEndPoint(ipaddress, 7788);//通過ip地址和埠號定位要連線的伺服器端
            tcpClient.Connect(point);//建立連線
            Console.WriteLine("連線到伺服器");//////

            //3:接收伺服器端發來的訊息
            byte[] data = new byte[1000];
            int length = tcpClient.Receive(data);//這裡的byte陣列用來接收資料,返回值length表示接收的資料長度
            string message = Encoding.UTF8.GetString(data, 0, length);//把位元組陣列轉化為字串
            Console.WriteLine("接收到伺服器端的訊息:" + message);

            //4:向伺服器端傳送訊息            
            string messageToServer = Console.ReadLine();
            Console.WriteLine("向伺服器端傳送訊息:" + messageToServer);//////

            tcpClient.Send(Encoding.UTF8.GetBytes(messageToServer));//向伺服器端傳送訊息

            Console.ReadKey();
        }
    }
}


相關推薦

C#socket建立伺服器進行簡單通訊

注:本文為本人學習筆記,之前在蠻牛網上發表的。 發現說明甚少,不過都是比較基礎的操作,這裡就不再說明了。包括兩個.cs檔案,一個是作為伺服器端,一個是客戶端。 伺服器端程式碼: using Syste

C#賦值進行簡單計算(dotnetcore)

使用vscode在dotnetcore環境下開發,C#賦值並進行簡單計算 建立dotnetcore專案:不會的參考: 使用vs code 建立.net core控制檯應用程式 : https://blog.csdn.net/qq_36051316/article/details/84

android與PC,C#與Java 利用protobuf 進行無障礙通訊Socket

轉自https://www.cnblogs.com/TerryBlog/archive/2011/04/23/2025654.html protobuf 是什麼?   Protocol buffers是一種編碼方法構造的一種有效而可擴充套件的格式的資料。 谷歌使用其內

java netty socket庫和自定義C#socket庫利用protobuf進行通訊完整例項

之前的文章講述了socket通訊的一些基本知識,已經本人自定義的C#版本的socket、和java netty 庫的二次封裝,但是沒有真正的發表測試用例。 本文只是為了講解利用protobuf 進行C# 和 java的通訊。以及完整的例項程式碼 java 程式碼 svn 地址,本人開發工具是NetBean

C#WinForm連線本地或遠端Sql資料庫,進行簡單操作。

在學習C#課程時,看到課本有相關內容的介紹。想起如果自己能做一個操作資料庫的小軟體應該不錯。 所需要的知識基礎就是sql的一些語句和C#的ADO.NET。 主要就是Connection、Command、DataReader和Dataset,還有就是DataAdapter等封

c++builder上使用TIDTCPServer和TIDTCPClient進行簡單通訊,如何通過程式碼動態設定TIDTCPServer的Bindings屬性。

 這兩天老大讓我實現一個簡單功能就是通過程式碼動態設定TIDTCPServer的Bindings屬性,剛開始我覺得這個問題So Easy,但是做著做著總是出現同樣一個錯誤不知道為什,這個問題一直糾結了我兩天時間終於在今天早上得以解決,在此同大家分享一下在這個過程中我是如何解

建立資料庫實現TCP通訊,客戶端登陸伺服器身份驗證之服務端程式設計

m_pRecordsetB->Open((_variant_t)flsql,dlg->m_pConnectionB.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);//開啟資料庫獲得符合條件              

如何用c++生成html5檔案進行程式設計

有時候根據專案需要,在一個c++專案裡面,需要對某些結果儲存為.htm或者.html檔案,並根據需要,在visual studio2013/2015的c++環境下對該.html檔案進行程式設計。這樣做,一方面為了輸出結果需要,一方面便於瀏覽器開啟。 首先 建立3個.html檔案,並設

Lucene筆記33-Lucene的擴充套件-使用Tika建立索引進行搜尋

一、使用Tika建立索引 之前建立索引的文件都是txt檔案,現在有了Tika,我們就可以將pdf,word,html等檔案,通過Tika提取出文字,之後建立索引,建立索引的寫法和之前大致相似。只需要將content域對應的值做一下處理,之前是FileReader來讀取,現在是使用Tika.p

c#實現開啟資料庫進行查詢,修改等操作

c#連線資料庫需要引用一些東西,首先我們引用:using System.Data.OleDb。 其次我們需要拖動一些控制元件,包括button,combobox,datagridview等。。。這裡就不一一說明了。效果圖如下   1.能不能自己選擇開啟某個資料庫呢?而不是在程式碼裡面就已經

Halcon建立模板進行模板匹配

在進行影象處理時,很多時候建立模板並通過匹配模板進行影象基準點的分析能大大提高ROI的選取準確度和效率。 下面通過例項來講述模板匹配的快速學習應用。 首先建立模板 先讀取影象,對讀取的影象建立模板並儲存,建立模板要挑選的是所有影象都存在的特徵或區域以保證在實際處理時

Python實現遠端mysql連線進行簡單資料庫操作

1.linux伺服器 安裝mysql: apt-get install mysql-server #Root使用者安裝mysql以及相關服務  apt-get install mysql-client  apt-get install libmysqlclient-dev

c# 讀取硬體資訊進行加密繫結

流程 讀取硬體資訊(此例中讀取cpu和磁碟資訊) 加密 解密 注意:1.磁碟資訊包括插入的行動硬碟或U盤,如果將此資訊也繫結,那麼插入外部儲存裝置比如U盤的時候會誤導加密程式。2.加密和解密採用通用的加密演算法,需要新增使用者自己的欄位參與運算以增加加密

JDBC——用JDBC連線MySQL資料庫進行簡單的增刪改查操作

一、什麼是JDBC Java 資料庫連線,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規範客戶端程式如何來訪問資料庫的應用程式介面,提供了諸如查詢和更新資料庫中資料的方法。(摘自維基百科) 二、簡單的JDBC例項 現在使用JDB

C#手動建立Dataset填充測試資料

        DataSet ds = new DataSet();//建立DataSet         DataTable dt = new DataTable("Table");//建立一個名為Table的DataTalbe         dt.Columns.A

孤荷淩寒自學python第六十二天學習mongoDB的基本操作進行簡單封裝1

年齡 聯系 文檔 社區 查詢 直接 執行 lifo 時代 孤荷淩寒自學python第六十二天學習mongoDB的基本操作並進行簡單封裝1 (完整學習過程屏幕記錄視頻地址在文末) 今天是學習mongoDB數據庫的第八天。 今天開始學習mongoDB的簡單操作,並對一些

孤荷凌寒自學python第六十二天學習mongoDB的基本操作進行簡單封裝1

孤荷凌寒自學python第六十二天學習mongoDB的基本操作並進行簡單封裝1   (完整學習過程螢幕記錄視訊地址在文末)   今天是學習mongoDB資料庫的第八天。 今天開始學習mongoDB的簡單操作,並對一些可能反覆經常使用的操作進行簡單的封裝。   今天成

孤荷凌寒自學python第六十四天學習mongoDB的基本操作進行簡單封裝3

孤荷凌寒自學python第六十四天學習mongoDB的基本操作並進行簡單封裝3   (完整學習過程螢幕記錄視訊地址在文末)   今天是學習mongoDB資料庫的第十天。 今天繼續學習mongoDB的簡單操作,並繼續對一些可能反覆經常使用的操作進行簡單的封裝。   今

孤荷凌寒自學python第六十五天學習mongoDB的基本操作進行簡單封裝4

孤荷凌寒自學python第六十五天學習mongoDB的基本操作並進行簡單封裝4   (完整學習過程螢幕記錄視訊地址在文末)   今天是學習mongoDB資料庫的第十一天。 今天繼續學習mongoDB的簡單操作,並繼續對一些可能反覆經常使用的操作進行簡單的封裝。  

孤荷淩寒自學python第六十五天學習mongoDB的基本操作進行簡單封裝4

姓名 ces pan try -- 理念 成功 語音 最終 孤荷淩寒自學python第六十五天學習mongoDB的基本操作並進行簡單封裝4 (完整學習過程屏幕記錄視頻地址在文末) 今天是學習mongoDB數據庫的第十一天。 今天繼續學習mongoDB的簡單操作,並繼