網站首頁 編程語言 正文
一、服務端
TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 13000);//定義監聽器
server.Start();//啟動監聽器
byte[] buffer = new byte[1024]; //創建一個容器用于接受數據
string data = null;
while (true)
{
//等待客戶端連接過來
TcpClient client = server.AcceptTcpClient();
//Task<TcpClient> task1 = server.AcceptTcpClientAsync();
//Socket socket = server.AcceptSocket();
//Task<Socket> task2 = server.AcceptSocketAsync();
//server.Pending();
//取得客戶端發送過來的數據
int len = client.Available;//獲取已經從網絡流接收且可供讀取的數據量
NetworkStream nstream = client.GetStream(); //返回一個可供讀寫的網絡流
int bytesRead;
do
{
bytesRead = nstream.Read(buffer, 0, buffer.Length); //接收消息
data = Encoding.UTF8.GetString(buffer, 0, bytesRead); //先將接收到的數據轉化可輸出的字符串類型
Console.WriteLine("收到消息:" + data); 輸出收到的信息
byte[] msg = Encoding.UTF8.GetBytes(data.ToUpper());
nstream.Write(buffer, 0, buffer.Length);//發送消息
} while (bytesRead > 0);
nstream.Close(); //1.先釋放流的數據
client.Close(); //2.再釋放客戶端的連接數據
}
server.Stop(); //3.關閉監聽
二、客戶端
TcpClient client = new TcpClient("127.0.0.1", 13000);//連接服務器
//或者
// TcpClient client=new TcpClient();
// client.Connect("127.0.0.1", 13000);
NetworkStream nstream = client.GetStream();
//---其他同服務端
nstream.Close(); //1.先釋放流的數據
client.Close(); //2.再釋放客戶端的連接數據
三、發送郵件
1、使用MailMessage和SmtpClient發送郵件。
在Wince中,可以使用OpenNetCF.Net.Mail類發送郵件。
MailMessage mailMessage = new MailMessage
{
//發件人
From = new MailAddress("***@163.com", "您的朋友", Encoding.UTF8),
Priority = MailPriority.High,
//郵件主題
SubjectEncoding = Encoding.UTF8,
Subject = "Hello",
};
//收件人 可以添加多個收件人
mailMessage.To.Add(new MailAddress("137***126@qq.com"));
//mailMessage.CC 獲取包含此電子郵件的抄送(CC)收件人的地址集合
//郵件正文
mailMessage.IsBodyHtml = true;//如果要發送html格式的消息,需要設置這個屬性
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.Body = "<p style='color:red;font-size:14px;'>郵件測試</p>";
//郵件內容即消息正文中中顯示圖片 ,需要為圖片指明src='cid:idname(資源id)'
AlternateView htmlBody = AlternateView.CreateAlternateViewFromString("<img src='cid:zfp'/>", null, "text/html");
//然后在LinkedResource加入文件的絕對地址,和ContentType 例如image/gif,text/html...與http請求的響應報文中的ContentType一致
LinkedResource lr = new LinkedResource("1.gif", "image/gif");
//綁定上文中指定的idname
lr.ContentId = "zfp";
//添加鏈接資源
htmlBody.LinkedResources.Add(lr);
mailMessage.AlternateViews.Add(htmlBody);
//發送附件 指明附件的絕對地址
Attachment attachment = new Attachment("1.txt");
mailMessage.Attachments.Add(attachment);
//創建郵件發送客戶端
SmtpClient sendClient = new SmtpClient("smtp.qq.com", 25)
{
//指定郵箱賬號和密碼
Credentials = new NetworkCredential(fromMail, "xmxyldrmtvnrddfe")
};
//指定如何發送電子郵件
sendClient.DeliveryMethod = SmtpDeliveryMethod.Network;
//指定使用使用安全套接字ssl加密的鏈接
sendClient.EnableSsl = true;
sendClient.Send(mailMessage);
//或者可以一步發送
sendClient.SendAsync(mailMessage, null);
?2、利用TcpClient類收取pop3郵件?
TcpClient client = new TcpClient("mail.**.com", 443);
//連接
NetworkStream ns = client.GetStream();
StreamReader sr = new StreamReader(ns, Encoding.Default);
string result = sr.ReadLine(); //返回OK或ER
//登陸
StreamWriter sw = new StreamWriter(ns);
sw.WriteLine("user b**");
sw.Flush();
result = sr.ReadLine();
sw.WriteLine("pass **");
sw.Flush();
result = sr.ReadLine();
//獲取郵件數量
sw.WriteLine("stat");
sw.Flush();
result = sr.ReadLine();//result.split(' ')[1]表示郵件數量
//獲取郵件信息
sw.WriteLine("top 1 0 ");
sw.Flush();
result = sr.ReadLine();
while (true)
{
result = sr.ReadLine();
if (result == ".") break;
if (result.Length > 4 && result.Substring(0, 8) == "Subject:")
{
//result為標題,亂碼用Base64解碼
Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(result));
}
}
原文鏈接:https://www.cnblogs.com/springsnow/p/9433990.html
相關推薦
- 2023-04-22 GO的range如何使用詳解_Golang
- 2022-04-21 MongoDB高效讀寫海量數據的方法_MongoDB
- 2023-01-13 基于C#實現屏幕取色器_C#教程
- 2023-07-15 監聽鼠標mouse事件冒泡處理
- 2022-08-17 R語言UpSet包實現集合可視化示例詳解_R語言
- 2022-02-26 SpringSecurity 自定義JwtAuthorFilter基于JWT的Token驗證
- 2022-10-18 filebeat同時收集錯誤日志與普通日志并存詳解_nginx
- 2023-04-27 react?render的原理及觸發時機說明_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支