網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、服務(wù)端
TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 13000);//定義監(jiān)聽(tīng)器
server.Start();//啟動(dòng)監(jiān)聽(tīng)器
byte[] buffer = new byte[1024]; //創(chuàng)建一個(gè)容器用于接受數(shù)據(jù)
string data = null;
while (true)
{
//等待客戶端連接過(guò)來(lái)
TcpClient client = server.AcceptTcpClient();
//Task<TcpClient> task1 = server.AcceptTcpClientAsync();
//Socket socket = server.AcceptSocket();
//Task<Socket> task2 = server.AcceptSocketAsync();
//server.Pending();
//取得客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)
int len = client.Available;//獲取已經(jīng)從網(wǎng)絡(luò)流接收且可供讀取的數(shù)據(jù)量
NetworkStream nstream = client.GetStream(); //返回一個(gè)可供讀寫(xiě)的網(wǎng)絡(luò)流
int bytesRead;
do
{
bytesRead = nstream.Read(buffer, 0, buffer.Length); //接收消息
data = Encoding.UTF8.GetString(buffer, 0, bytesRead); //先將接收到的數(shù)據(jù)轉(zhuǎn)化可輸出的字符串類(lèi)型
Console.WriteLine("收到消息:" + data); 輸出收到的信息
byte[] msg = Encoding.UTF8.GetBytes(data.ToUpper());
nstream.Write(buffer, 0, buffer.Length);//發(fā)送消息
} while (bytesRead > 0);
nstream.Close(); //1.先釋放流的數(shù)據(jù)
client.Close(); //2.再釋放客戶端的連接數(shù)據(jù)
}
server.Stop(); //3.關(guān)閉監(jiān)聽(tīng)
二、客戶端
TcpClient client = new TcpClient("127.0.0.1", 13000);//連接服務(wù)器
//或者
// TcpClient client=new TcpClient();
// client.Connect("127.0.0.1", 13000);
NetworkStream nstream = client.GetStream();
//---其他同服務(wù)端
nstream.Close(); //1.先釋放流的數(shù)據(jù)
client.Close(); //2.再釋放客戶端的連接數(shù)據(jù)
三、發(fā)送郵件
1、使用MailMessage和SmtpClient發(fā)送郵件。
在Wince中,可以使用OpenNetCF.Net.Mail類(lèi)發(fā)送郵件。
MailMessage mailMessage = new MailMessage
{
//發(fā)件人
From = new MailAddress("***@163.com", "您的朋友", Encoding.UTF8),
Priority = MailPriority.High,
//郵件主題
SubjectEncoding = Encoding.UTF8,
Subject = "Hello",
};
//收件人 可以添加多個(gè)收件人
mailMessage.To.Add(new MailAddress("137***126@qq.com"));
//mailMessage.CC 獲取包含此電子郵件的抄送(CC)收件人的地址集合
//郵件正文
mailMessage.IsBodyHtml = true;//如果要發(fā)送html格式的消息,需要設(shè)置這個(gè)屬性
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.Body = "<p style='color:red;font-size:14px;'>郵件測(cè)試</p>";
//郵件內(nèi)容即消息正文中中顯示圖片 ,需要為圖片指明src='cid:idname(資源id)'
AlternateView htmlBody = AlternateView.CreateAlternateViewFromString("<img src='cid:zfp'/>", null, "text/html");
//然后在LinkedResource加入文件的絕對(duì)地址,和ContentType 例如image/gif,text/html...與http請(qǐng)求的響應(yīng)報(bào)文中的ContentType一致
LinkedResource lr = new LinkedResource("1.gif", "image/gif");
//綁定上文中指定的idname
lr.ContentId = "zfp";
//添加鏈接資源
htmlBody.LinkedResources.Add(lr);
mailMessage.AlternateViews.Add(htmlBody);
//發(fā)送附件 指明附件的絕對(duì)地址
Attachment attachment = new Attachment("1.txt");
mailMessage.Attachments.Add(attachment);
//創(chuàng)建郵件發(fā)送客戶端
SmtpClient sendClient = new SmtpClient("smtp.qq.com", 25)
{
//指定郵箱賬號(hào)和密碼
Credentials = new NetworkCredential(fromMail, "xmxyldrmtvnrddfe")
};
//指定如何發(fā)送電子郵件
sendClient.DeliveryMethod = SmtpDeliveryMethod.Network;
//指定使用使用安全套接字ssl加密的鏈接
sendClient.EnableSsl = true;
sendClient.Send(mailMessage);
//或者可以一步發(fā)送
sendClient.SendAsync(mailMessage, null);
?2、利用TcpClient類(lèi)收取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();
//獲取郵件數(shù)量
sw.WriteLine("stat");
sw.Flush();
result = sr.ReadLine();//result.split(' ')[1]表示郵件數(shù)量
//獲取郵件信息
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為標(biāo)題,亂碼用Base64解碼
Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(result));
}
}
原文鏈接:https://www.cnblogs.com/springsnow/p/9433990.html
相關(guān)推薦
- 2022-06-02 Android?View的事件體系教程詳解_Android
- 2023-01-05 Kotlin?object的幾種用法示例詳解_Android
- 2023-07-22 macos設(shè)置環(huán)境變量path詳解
- 2022-05-29 Redis?哨兵機(jī)制及配置實(shí)現(xiàn)_Redis
- 2022-09-03 Go語(yǔ)言函數(shù)的延遲調(diào)用(Deferred?Code)詳解_Golang
- 2022-03-24 .Net?Core服務(wù)治理Consul自動(dòng)擴(kuò)展和服務(wù)調(diào)用_自學(xué)過(guò)程
- 2022-04-12 input file詳細(xì)介紹、更改css樣式、獲取圖片地址、徹底清空上傳文件(建議收藏)
- 2022-07-08 C#中的GDI+圖像編程詳解_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支