1
我在哪裏工作,我們目前使用的時鐘輸入系統使用連接到我們網絡的手持掃描器。我想知道是否有通過C#的方式連接到此設備並從此設備接收任何輸入。或者,就此而言,以類似的方式連接任何其他輸入設備。如果有的話,如果有人能給我一些指點,讓我開始,或建議去哪裏看。從TCP/IP設備接收數據
我在哪裏工作,我們目前使用的時鐘輸入系統使用連接到我們網絡的手持掃描器。我想知道是否有通過C#的方式連接到此設備並從此設備接收任何輸入。或者,就此而言,以類似的方式連接任何其他輸入設備。如果有的話,如果有人能給我一些指點,讓我開始,或建議去哪裏看。從TCP/IP設備接收數據
如果任何人都可以給我一些指示,讓我開始,或去哪裏看。
我會建議你看看「System.Net」命名空間。使用StreamReader
,StreamWriter
或我推薦的NetworkStream
,您可以輕鬆地在多個設備之間寫入和讀取流。
查看以下示例以瞭解如何託管數據並連接到主機以接收數據。
託管數據(服務器):
static string ReadData(NetworkStream network)
{
string Output = string.Empty;
byte[] bReads = new byte[1024];
int ReadAmount = 0;
while (network.DataAvailable)
{
ReadAmount = network.Read(bReads, 0, bReads.Length);
Output += string.Format("{0}", Encoding.UTF8.GetString(
bReads, 0, ReadAmount));
}
return Output;
}
static void WriteData(NetworkStream stream, string cmd)
{
stream.Write(Encoding.UTF8.GetBytes(cmd), 0,
Encoding.UTF8.GetBytes(cmd).Length);
}
static void Main(string[] args)
{
List<TcpClient> clients = new List<TcpClient>();
TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, 1337));
//listener.ExclusiveAddressUse = true; // One client only?
listener.Start();
Console.WriteLine("Server booted");
Func<TcpClient, bool> SendMessage = (TcpClient client) => {
WriteData(client.GetStream(), "Responeded to client");
return true;
};
while (true)
{
if (listener.Pending()) {
clients.Add(listener.AcceptTcpClient());
}
foreach (TcpClient client in clients) {
if (ReadData(client.GetStream()) != string.Empty) {
Console.WriteLine("Request from client");
SendMessage(client);
}
}
}
}
現在客戶將然後使用下面的方法來發送請求:
static string ReadData(NetworkStream network)
{
string Output = string.Empty;
byte[] bReads = new byte[1024];
int ReadAmount = 0;
while (network.DataAvailable)
{
ReadAmount = network.Read(bReads, 0, bReads.Length);
Output += string.Format("{0}", Encoding.UTF8.GetString(
bReads, 0, ReadAmount));
}
return Output;
}
static void WriteData(NetworkStream stream, string cmd)
{
stream.Write(Encoding.UTF8.GetBytes(cmd), 0,
Encoding.UTF8.GetBytes(cmd).Length);
}
static void Main(string[] args)
{
TcpClient client = new TcpClient();
client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1337));
while (!client.Connected) { } // Wait for connection
WriteData(client.GetStream(), "Send to server");
while (true) {
NetworkStream strm = client.GetStream();
if (ReadData(strm) != string.Empty) {
Console.WriteLine("Recieved data from server.");
}
}
}
綜觀API文檔中的設備會成爲最好的地方...我們不能告訴你。在最基本的層面上,'Socket','NetworkStream'和'TcpClient'可能很有用 - 但很難說不知道API。 – 2012-08-13 08:35:51
是否可以連接到設備取決於設備本身。它是否帶有任何文檔? – CodeCaster 2012-08-13 08:36:27
同意,你可能需要一個協議文件或equivilent,除非你想花很長時間猜測。 – KingCronus 2012-08-13 08:36:41