日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很久之前用過Socket,由于近期項目需要用socket傳輸視頻流,早上花了半小時回顧了一下。

Socket類簡要介紹

socket下提供的主要類有四個,分別是socket,tcpclient,tcplistener,udpclient,他們的作用如下:

  • Socket 含有大量方法用于網絡連接,.net中的一些高級類如webrequest,tcpclient等均調用此類來進行操作
  • TcpClient? 提供客戶端連接,用于創建和使用tcp網絡服務
  • TcpListener? 用于從tcp網絡客戶端偵聽連接
  • UdpClient? 為udp客戶端創建連接,是tcp的備用協議,在本地網絡使用
  • ?Demo測試

    這個Demo含有兩個project,一個是server,一個是client,為了簡潔,均采用控制臺程序

    服務端:

    ?

    代碼 using?System;?
    using?System.Collections.Generic;?
    using?System.Linq;?
    using?System.Text;?
    using?System.IO;?
    using?System.Net.Sockets;?

    namespace?SocketServer?
    {?
    ????
    class?Program?
    ????{?
    ????????
    public?static?TcpListener?tcpListener;?
    ????????
    private?static?NetworkStream?networkStream;?
    ????????
    private?static?StreamReader?streamReader;?
    ????????
    private?static?StreamWriter?streamWriter;?
    ????????
    public?static?Socket?socketForClient;?

    ????????
    static?void?Main(string[]?args)?
    ????????{?
    ????????????
    try?
    ????????????{?
    ????????????????tcpListener?
    =?new?TcpListener(1234);?
    ????????????????tcpListener.Start();?
    ????????????????Console.WriteLine(
    "服務啟動,開始監控1234端口");?

    ????????????????socketForClient?
    =?tcpListener.AcceptSocket();?
    ????????????????networkStream?
    =?new?NetworkStream(socketForClient);?
    ????????????????streamWriter?
    =?new?StreamWriter(networkStream);?
    ????????????????streamReader?
    =?new?StreamReader(networkStream);?
    ????????????????
    try?
    ????????????????{?
    ????????????????????
    if?(socketForClient.Connected)?
    ????????????????????{?
    ????????????????????????Console.WriteLine(
    "客戶端已連接");?
    ????????????????????????
    string?strInput?=?streamReader.ReadLine();?
    ????????????????????????Console.WriteLine(
    "從客戶端傳入的字符串是:"?+?strInput);?
    ????????????????????????
    string?strOutput?=?strInput.ToUpper();?
    ????????????????????????streamWriter.Write(strOutput);?
    ????????????????????????Console.WriteLine(
    "轉換后字符串是"?+?strOutput);?
    ????????????????????????streamWriter.Flush();?
    ????????????????????}?
    ????????????????}?
    ????????????????
    catch?(Exception?ex)?
    ????????????????{?
    ????????????????????Console.WriteLine(
    "出現異常:"?+?ex.Message);?
    ????????????????}?
    ????????????}?
    ????????????
    catch(Exception?ex)?
    ????????????{?
    ????????????????Console.WriteLine(
    "發生異常,關閉連接");?
    ????????????????tcpListener.Stop();?
    ????????????????streamWriter.Close();?
    ????????????????streamReader.Close();?
    ????????????????networkStream.Close();?
    ????????????}?
    ????????}?
    ????}?
    }

    ?

    客戶端:

    ?

    代碼 using?System;?
    using?System.Collections.Generic;?
    using?System.Linq;?
    using?System.Text;?
    using?System.IO;?
    using?System.Net.Sockets;?

    namespace?SocketClient?
    {?
    ????
    class?Program?
    ????{?
    ????????
    public?static?TcpClient?myclient;?
    ????????
    private?static?NetworkStream?networkStream;?
    ????????
    private?static?StreamReader?streamReader;?
    ????????
    private?static?StreamWriter?streamWriter;?

    ????????
    static?void?Main(string[]?args)?
    ????????{?
    ????????????
    try?
    ????????????{?
    ????????????????
    try?
    ????????????????{?
    ????????????????????myclient?
    =?new?TcpClient("localhost",?1234);?
    ????????????????????Console.WriteLine(
    "已經連接到localhost的1234端口");?
    ????????????????}?
    ????????????????
    catch?(Exception?ex)?
    ????????????????{?
    ????????????????????Console.WriteLine(
    "未能在1234端口連接上服務器");?
    ????????????????}?
    ????????????????networkStream?
    =?myclient.GetStream();?
    ????????????????streamReader?
    =?new?StreamReader(networkStream);?
    ????????????????streamWriter?
    =?new?StreamWriter(networkStream);?
    ????????????????Console.WriteLine(
    "請輸入一串小寫字母:");?
    ????????????????
    string?strInput?=?Console.ReadLine();?
    ????????????????streamWriter.Write(strInput);?
    ????????????????Console.WriteLine(
    "正在發送消息");?
    ????????????????streamWriter.Flush();?
    ????????????????
    string?strServerComes?=?streamReader.ReadLine();?
    ????????????????Console.WriteLine(
    "正在從服務端收取消息");?
    ????????????????Console.WriteLine(
    "從服務端收到的消息是:"?+?strServerComes);?
    ????????????}?
    ????????????
    catch(Exception?ex)?
    ????????????{?
    ????????????????Console.WriteLine(
    "發生異常,關閉連接");?
    ????????????????streamReader.Close();?
    ????????????????streamWriter.Close();?
    ????????????????networkStream.Close();?
    ????????????}?
    ????????}?
    ????}?
    }

    ?

    ?

    ?

    在windows 7 中需要安全設置,否則socket將無法正常訪問端口。

    接下來將會做socket與silverlight傳輸文本及視頻流的嘗試。

    轉載于:https://www.cnblogs.com/wengyuli/archive/2010/07/01/soket-review.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。