基于TCPUDP使用C#开发的简易qqWord格式文档下载.docx
- 文档编号:20938425
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:27
- 大小:1.53MB
基于TCPUDP使用C#开发的简易qqWord格式文档下载.docx
《基于TCPUDP使用C#开发的简易qqWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于TCPUDP使用C#开发的简易qqWord格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
usingSystem.Net.Sockets;
usingSystem.Threading;
usingSystem.IO;
namespaceWindowsFormsApplication1
{
publicpartialclassForm1:
Form
{
publicForm1()
InitializeComponent();
this.Init();
tab2.Visible=true;
tab3.Visible=false;
tab1.Visible=false;
}
privatevoidbtnLog_Click(objectsender,EventArgse)
if(txtIP.Text=="
"
||txtPort.Text=="
)
MessageBox.Show("
请?
输?
入?
IP地?
址·
或ò
端?
口ú
号?
!
?
"
提?
示?
信?
息¢"
MessageBoxButtons.OK,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1);
return;
else
try
IPAddressipadd=IPAddress.Parse(this.txtIP.Text);
intport=Convert.ToInt32(this.txtPort.Text);
tab3.Visible=true;
tab1.Visible=true;
this.Init2();
this.btnImgFile.Enabled=false;
this.Text="
服务?
器÷
"
+DateTime.Now.ToString()+"
+DateTime.Now.DayOfWeek.ToString();
richTextBox1.AppendText("
System:
阰服务?
已?
进?
聊?
天?
室酣?
<
-"
+DateTime.Now.ToLongTimeString()+"
->
.....\r\n"
);
stringSerIp=txtIP.Text.ToString();
stringSerPort=txtPort.Text.ToString();
labip.Text="
IP地?
:
+"
+SerIp+"
;
labport.Text="
端?
+SerPort;
catch(Exception)
您ú
的?
不?
正y确ā?
,?
\n请?
重?
新?
错洙?
误ó
MessageBoxButtons.OK,MessageBoxIcon.Error);
//重?
置?
服务?
息¢
privatevoidbtnResent_Click_1(objectsender,EventArgse)
txtIP.Clear();
txtPort.Clear();
privatevoidInit()
richTextBox1.Visible=false;
txt1_sendinfo.Visible=false;
privatevoidInit2()
richTextBox1.Visible=true;
txt1_sendinfo.Visible=true;
privateOpenFileDialogopenfiledialog=newOpenFileDialog();
privateSaveFileDialogsavefiledialog=newSaveFileDialog();
privatebyte[]img;
//传?
图?
片?
用?
字?
节ú
数簓组哩?
privateintimgflag=0;
privateFileStreamfstream;
publicdelegatevoidUpdateRichTextBox(stringmsg);
//异皑?
步?
委ˉ托狣代洙?
理え?
publicdelegatevoidUpdateImg(Streams);
privateSocketsocket;
//服务?
套?
接ó
privateSocketclientSocket;
//客í
户§
连?
privateThreadthread;
//启?
动ˉ服务?
开a始?
监à
听瑈
privatevoidbtn_start_Click(objectsender,EventArgse)
IPAddressip=IPAddress.Parse(this.txtIP.Text);
IPEndPointserver=newIPEndPoint(ip,Int32.Parse(this.txtPort.Text));
//创洹?
建¨
socket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
socket.Bind(server);
//绑悒?
定¨
socket.Listen(10);
thread=newThread(newThreadStart(AcceptMessage));
thread.Start();
//开a始?
Taking...."
richTextBox1.Clear();
启?
动ˉ!
btnImgFile.Enabled=true;
btn_start.Enabled=false;
btn_stop.Enabled=true;
catch(Exceptionex)
:
+ex.Message);
this.btn_start.Enabled=true;
//接ó
收?
客í
publicvoidAcceptMessage()//异皑?
息¢后ó
台?
线?
程ì
方?
法ぁ?
this.clientSocket=socket.Accept();
this.richTextBox1.Clear();
连?
成é
功|!
while(true)
if(this.clientSocket==null||this.clientSocket.Connected==false)
break;
NetworkStreamnetStream=newNetworkStream(this.clientSocket);
//通?
过yclientSocket对?
象ó
获?
取?
NetworkStream对?
//得?
到?
一?
条?
消?
息¢的?
长¤
度è
byte[]dataSize=newbyte[4];
netStream.Read(dataSize,0,4);
intsize=System.BitConverter.ToInt32(dataSize,0);
//循-环·
直±
完?
整?
息¢全?
部?
读á
中D
byte[]message=newbyte[size];
intdataleft=size;
intstart=0;
if(size>
0)
while(dataleft>
intrecv=netStream.Read(message,start,dataleft);
start+=recv;
dataleft-=recv;
if(message[0]==101)//101代洙?
表括?
传?
MemoryStreamms=newMemoryStream(message,1,message.Length-1);
richTextBox1.BeginInvoke(newUpdateImg(ViewImg),newobject[]{ms});
else//默?
认?
行D普?
通?
stringMsg=System.Text.Encoding.Unicode.GetString(message,1,message.Length-1);
this.richTextBox1.BeginInvoke(newUpdateRichTextBox(UpdateMessage),newobject[]{Msg});
Thread.Sleep(100);
catch(System.Net.Sockets.SocketExceptionse)
:
阰"
+se.Message);
//点?
击÷
“°
发ぁ?
送í
”±
按恪?
钮¥
privatevoidbtn_send_Click(objectsender,EventArgse)
if(txt1_sendinfo.Text=="
先è
内ú
容╕!
txt1_sendinfo.Clear();
txt1_sendinfo.Focus();
if(imgflag==1)
//发ぁ?
时骸?
byte[]imgSize=newbyte[4];
//将?
32位?
数簓值μ转羇换?
为a字?
imgSize=System.BitConverter.GetBytes(img.Length+1);
//其?
中D加ó
1是?
因皑?
为a后ó
面?
了?
个?
101做?
分?
隔?
符?
NetworkStreamnetStream=newNetworkStream(clientSocket);
netStream.Write(imgSize,0,4);
netStream.WriteByte(101);
//分?
netStream.Write(img,0,img.Length);
netStream.Flush();
this.richTextBox1.SelectionColor=Color.SteelBlue;
this.richTextBox1.AppendText("
阰\r\n"
this.richTextBox1.SelectionStart=this.richTextBox1.Text.Length;
Clipboard.SetDataObject(Image.FromStream(fstream));
richTextBox1.Paste();
\n"
fstream.Flush();
fstream.Close();
//此?
流ⅰ?
必?
须?
在ú
这a里?
才?
可é
以?
除y
txt1_sendinfo.Paste();
this.richTextBox1.Focus();
this.txt1_sendinfo.Text="
this.txt1_sendinfo.Focus();
imgflag=0;
//复′原-
//不?
执′行D后ó
文?
本?
catch(System.Exceptionex)
息¢时骸?
stringstr="
+txt1_sendinfo.Text;
inti=str.Length;
if(i==0)
//因皑?
为astr为aUnicode编括?
码?
每?
占?
2?
所ù
实害?
际ê
数簓应畖为a字?
数簓*2
i*=2;
dataSize=System.BitConverter.GetBytes(i+1);
写′了?
1做?
byte[]sendbytes=System.Text.Encoding.Unicode.GetBytes(str);
netStream.Write(dataSize,0,4);
netStream.WriteByte
(1);
netStream.Write(sendbytes,0,sendbytes.Length);
richTextBox1.SelectionColor=Color.SteelBlue;
this.richTextBox1.AppendText(str+"
this.txt1_sendinfo.Rtf="
//断?
开a连?
privatevoidbtn_stop_Click(objectsender,EventArgse)
socket.Close();
thread.Abort();
thread.Join(10);
btn_stop.Enabled=false;
断?
.....\r\n"
privatevoidUpdateMessage(stringstrmsg)//将?
异皑?
息¢显?
富?
框ò
里?
this.richTextBox1.SelectionColor=Color.LightCoral;
this.richTextBox1.AppendText(strmsg+"
privatevoidViewImg(Streams)//将?
richTextBox1.SelectionStart=richTextBox1.Text.Length;
richTextBox1.SelectionColor=Color.LightCoral;
Clipboard.SetDataObject(Image.FromStream(s));
//利?
剪?
切D板?
richTextBox1.Focus();
//上?
件t中D的?
privatevoidbtnImgFile_Click(objectsender,EventArgse)
openfiledialog.Filter="
有瓺文?
件t(*.*)|*.*|位?
(*.bmp)|*.bmp|文?
件t(辍?
.jpg)|*.jpg|文?
.gif)|*.gif"
if(openfiledialog.ShowDialog()==DialogResult.OK)
Stringstrpath=openfiledialog.FileName;
fstream=newFileStream(strpath,FileMode.Open);
BinaryReaderbreader=newBinaryReader(fstream);
img=breader.ReadBytes((int)fstream.Length);
imgflag=1;
//退?
出?
privatevoidbtn_Exit_Click(objectsender,EventArgse)
if(btn_stop.Enabled!
=true)
this.Close();
Application.Exit();
断?
//取?
privatevoidbtnRest_Click(objectsender,EventArgse)
//清?
屏á
privatevoidbtnClea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TCPUDP 使用 C# 开发 简易 qq