一个扫码枪遵循TCP协议,通过改代码即可获取扫码枪所扫描的信息;(有一个串口服务器);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; using System.Diagnostics; using System.Net; namespace Demo_Net { //本机为服务端 //下午加一个判断网络是否连接;以及做出相应的判断; class Program { static Socket msock; static void Main( string [] args) { //先判断是否ping通: string ips = "10.18.14.111" ; string str = NetConnect(ips); Console.WriteLine(str); Console.ReadLine(); } //通过ping的方法判断是否连接; private static string NetConnect( string ip) { Process p = new Process(); p.StartInfo.FileName = "cmd.exe" ; p.StartInfo.UseShellExecute = false ; p.StartInfo.RedirectStandardError = true ; p.StartInfo.RedirectStandardInput = true ; p.StartInfo.RedirectStandardOutput = true ; p.StartInfo.CreateNoWindow = false ; string pingstr; p.Start(); p.StandardInput.WriteLine( "ping -n 1 " + ip); p.StandardInput.WriteLine( "exit" ); string strRst = p.StandardOutput.ReadToEnd(); if (strRst.IndexOf( "(0% 丢失)" ) != -1) { pingstr = "连接成功" ; //定义socket连接 需要的本机ip以及相应的端口; msock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var localIP = new IPEndPoint(IPAddress.Parse( "10.18.14.23" ), 10001); msock.Bind(localIP); //自己定义最大网络连接数 msock.Listen(10); //新建线程处理; Thread th = new Thread( delegate () { Rec(); }); th.IsBackground = true ; th.Start(); } else { pingstr = "连接超时" ; } p.Close(); return pingstr; } //监听是否有链接,新开线程处理 static void Rec() { do { Socket s = msock.Accept(); Thread th = new Thread( delegate () { Parse(s); }); th.IsBackground = true ; th.Start(); } while ( true ); } //有链接时处理获取的信息 static void Parse(Socket s) { do { byte [] b = new byte [1000]; int l = s.Receive(b); b = b.Take(l).ToArray(); string rs = string .Empty; for ( int i = 0; i < b.Length; i++) { rs = rs + b[i].ToString(); } //解码 Console.WriteLine(Encoding.ASCII.GetString(b, 0, l)); } while ( true ); } } } |