close
單向的訊息傳遞程式
簡介
程式範例
由於網路程式必須有連線,因此至少要有兩個程式才能運作,通常主動連線的一方稱為 Client,被動等待連線的一方稱為 Server,這就是所謂的 Client - Server 架構。
在本範例中,我們撰寫了一個 TcpClient 與一個 TcpServer 程式,TcpClient 連線到 TcpServer 之後,會將使用者所輸入的文字傳司送給 TcpServer。當 TcpServer 收到這些文字之後會印出在螢幕上,這個範例示範了一個極為簡單的網路程式架構。
檔案:TcpClient1.cs
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class TcpClient
{
public static void Main(string[] args)
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(args[0]), 20);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ipep);
while(true)
{
string input = Console.ReadLine();
if (input == "exit")
break;
byte[] data = Encoding.UTF8.GetBytes(input);
// byte[] data = Encoding.ASCII.GetBytes(input);
server.Send(data);
}
Console.WriteLine("Disconnecting from server...");
server.Shutdown(SocketShutdown.Both);
server.Close();
}
}
檔案:TcpServer1.cs
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
public class TcpServer
{
public static void Main()
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 20);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
newsock.Bind(ipep);
newsock.Listen(10);
while(true)
{
Socket client = newsock.Accept();
IPEndPoint clientep = (IPEndPoint) client.RemoteEndPoint;
Console.WriteLine("Client End Point = " + clientep);
// create a new thread and then receive message.
TcpListener listener = new TcpListener(client);
Thread thread = new Thread(new ThreadStart(listener.run));
thread.Start();
}
// newsock.Close();
}
}
public class TcpListener {
Socket socket;
public TcpListener(Socket s)
{
socket = s;
}
public void run()
{
try {
while (true)
{
byte[] data = new byte[1024];
int recv = socket.Receive(data);
if (recv == 0) break;
Console.WriteLine(Encoding.UTF8.GetString(data, 0, recv));
}
socket.Close();
} catch (Exception e) {
Console.WriteLine("Client "+socket.RemoteEndPoint+" Error : close");
Console.WriteLine(e);
}
}
}
陳鍾誠 (2010年06月15日),(網頁標題) C# 單向的訊息傳遞程式,(網站標題) 免費電子書:C# 程式設計,2010年06月15日,取自 http://cs0.wikidot.com/tcpclientserver1 ,網頁修改第 1 版。
文章標籤
全站熱搜
留言列表