程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Visual C#網絡編程之TCP(4)

Visual C#網絡編程之TCP(4)

編輯:關於C語言
合運用上面的知識,下面的實例實現了簡單的網絡通訊-雙機互連,針對客戶端和服務端分別編制了應用程序。客戶端創建到服務端的連接,向遠程主機發送連接請求連接信號,並發送交談內容;遠程主機端接收來自客戶的連接,向客戶端發回確認連接的信號,同時接收並顯示客戶端的交談內容。在這個基礎上,發揮你的創造力,你完全可以開發出一個基於程序語言(C#)級的聊天室!

客戶端主要源代碼:

public void SendMeg()//發送信息
{
try
{
int port=Int32.Parse(textBox3.Text.ToString());//遠程主機端口
try
{
tcpClient=new TcpClient(textBox1.Text,port);//創建TcpClIEnt對象實例 }
catch(Exception le)
{
MessageBox.Show("TcpClIEnt Error:"+le.Message);
}
string strDateLine=DateTime.Now.ToShortDateString()+" "+DateTime.Now.ToLongTimeString();//得到發送時客戶端時間
netStream=tcpClIEnt.GetStream();//得到網絡流
sw=new StreamWriter(netStream);//創建TextWriter,向流中寫字符
string Words=textBox4.Text;//待發送的話
string content=strDateLine+Words;//待發送內容
sw.Write(content);//寫入流
sw.Close();//關閉流寫入器
netStream.Close();//關閉網絡流
tcpClIEnt.Close();//關閉客戶端連接
}
catch(Exception ex)
{
MessageBox.Show("Sending Message Failed!"+ex.Message);
}
textBox4.Text="";//清空
}

服務器端主要源代碼:

public void StartListen()//偵聽特定端口的用戶請求
{
//ReceiveMeg();
isLinked=false; //連接標志
try
{
int port=Int32.Parse(textBox1.Text.ToString());//本地待偵聽端口
serverListener=new TcpListener(port);//創建TcpListener對象實例
serverListener.Start(); //啟動偵聽
}
catch(Exception ex)
{
MessageBox.Show("Can‘t Start Server"+ex.Message);
return;
}
isLinked=true;
while(true)//進入無限循環等待用戶端連接
{
try
{
tcpClient=serverListener.AcceptTcpClIEnt();//創建客戶端連接對象
netStream=tcpClIEnt.GetStream();//得到網絡流
sr=new StreamReader(netStream);//流讀寫器
}
catch(Exception re)
{
MessageBox.Show(re.Message);
}
string buffer="";
string received="";
received+=sr.ReadLine();//讀流中一行
while(received.Length!=0)
{
buffer+=received;
buffer+="\r\n";
//received="";
received=sr.ReadLine();
}
listBox1.Items.Add(buffer);//顯示
//關閉
sr.Close();
netStream.Close();
tcpClIEnt.Close();
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved