在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换
生活随笔
收集整理的這篇文章主要介紹了
在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很久之前用過Socket,由于近期項目需要用socket傳輸視頻流,早上花了半小時回顧了一下。
Socket類簡要介紹
socket下提供的主要類有四個,分別是socket,tcpclient,tcplistener,udpclient,他們的作用如下:
?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请求-回复方式的简易数据交换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海康Ehome协议的的PS流分析
- 下一篇: MySQL字符串拼接函数使用