C#实践录:代码片段-网络相关

一些与网络有关的代码片段。

TCP连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
try
{
// 连接上说明在线,使用AsyncWaitHandle连接,超时300ms
var client = new TcpClient();
var result = client.BeginConnect(dev.RFIDIP, CHostConfig.RFIDPort, null, null);
var ret = result.AsyncWaitHandle.WaitOne(TimeSpan.FromMilliseconds(300));
if (ret) // 连接上,更新时间戳
{
client.EndConnect(result);
dev.RFIDIPTime = Utils.GetTimeStampString();
}
else
{
//Console.WriteLine($"connect {dev.RFIDIP} ret: {ret}");
}
}
catch (Exception e)
{
//Console.WriteLine(e);
}

发送post请求

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
public static void PostToServer(string url, string json)
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
request.Timeout = 1000; // 超时为1秒,防止过久
try
{
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Console.WriteLine($"ret: {result}");
}
}
catch (WebException e) // 连接不上,抛出异常
{
//Console.WriteLine(e);
}
}