在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换
生活随笔
收集整理的這篇文章主要介紹了
在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
很久之前用過(guò)Socket,由于近期項(xiàng)目需要用socket傳輸視頻流,早上花了半小時(shí)回顧了一下。
Socket類(lèi)簡(jiǎn)要介紹
socket下提供的主要類(lèi)有四個(gè),分別是socket,tcpclient,tcplistener,udpclient,他們的作用如下:
?Demo測(cè)試
這個(gè)Demo含有兩個(gè)project,一個(gè)是server,一個(gè)是client,為了簡(jiǎn)潔,均采用控制臺(tái)程序
服務(wù)端:
?
代碼 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("服務(wù)啟動(dòng),開(kāi)始監(jiān)控1234端口");?
????????????????socketForClient?=?tcpListener.AcceptSocket();?
????????????????networkStream?=?new?NetworkStream(socketForClient);?
????????????????streamWriter?=?new?StreamWriter(networkStream);?
????????????????streamReader?=?new?StreamReader(networkStream);?
????????????????try?
????????????????{?
????????????????????if?(socketForClient.Connected)?
????????????????????{?
????????????????????????Console.WriteLine("客戶(hù)端已連接");?
????????????????????????string?strInput?=?streamReader.ReadLine();?
????????????????????????Console.WriteLine("從客戶(hù)端傳入的字符串是:"?+?strInput);?
????????????????????????string?strOutput?=?strInput.ToUpper();?
????????????????????????streamWriter.Write(strOutput);?
????????????????????????Console.WriteLine("轉(zhuǎn)換后字符串是"?+?strOutput);?
????????????????????????streamWriter.Flush();?
????????????????????}?
????????????????}?
????????????????catch?(Exception?ex)?
????????????????{?
????????????????????Console.WriteLine("出現(xiàn)異常:"?+?ex.Message);?
????????????????}?
????????????}?
????????????catch(Exception?ex)?
????????????{?
????????????????Console.WriteLine("發(fā)生異常,關(guān)閉連接");?
????????????????tcpListener.Stop();?
????????????????streamWriter.Close();?
????????????????streamReader.Close();?
????????????????networkStream.Close();?
????????????}?
????????}?
????}?
}
?
客戶(hù)端:
?
代碼 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("已經(jīng)連接到localhost的1234端口");?
????????????????}?
????????????????catch?(Exception?ex)?
????????????????{?
????????????????????Console.WriteLine("未能在1234端口連接上服務(wù)器");?
????????????????}?
????????????????networkStream?=?myclient.GetStream();?
????????????????streamReader?=?new?StreamReader(networkStream);?
????????????????streamWriter?=?new?StreamWriter(networkStream);?
????????????????Console.WriteLine("請(qǐng)輸入一串小寫(xiě)字母:");?
????????????????string?strInput?=?Console.ReadLine();?
????????????????streamWriter.Write(strInput);?
????????????????Console.WriteLine("正在發(fā)送消息");?
????????????????streamWriter.Flush();?
????????????????string?strServerComes?=?streamReader.ReadLine();?
????????????????Console.WriteLine("正在從服務(wù)端收取消息");?
????????????????Console.WriteLine("從服務(wù)端收到的消息是:"?+?strServerComes);?
????????????}?
????????????catch(Exception?ex)?
????????????{?
????????????????Console.WriteLine("發(fā)生異常,關(guān)閉連接");?
????????????????streamReader.Close();?
????????????????streamWriter.Close();?
????????????????networkStream.Close();?
????????????}?
????????}?
????}?
}
?
?
?
在windows 7 中需要安全設(shè)置,否則socket將無(wú)法正常訪(fǎng)問(wèn)端口。
接下來(lái)將會(huì)做socket與silverlight傳輸文本及視頻流的嘗試。
轉(zhuǎn)載于:https://www.cnblogs.com/wengyuli/archive/2010/07/01/soket-review.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 海康Ehome协议的的PS流分析
- 下一篇: STL中的set/map