C# socket 聊天的 C/s程序 源码

要能用,完整的。除了聊天之外还能收发文件!!!!!!可以的话希望能解答我一些小白的问题!!!!!!!!谢谢!... 要能用,完整的。除了聊天之外还能收发文件!!!!!!可以的话希望能解答我一些小白的问题!!!!!!!!谢谢! 展开
 我来答
shuibiyy
2014-10-14 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:138万
展开全部
  //"开始"按钮事件 
  private void button1_Click(object sender, System.EventArgs e) { 
   //取得预保存的文件名 
   string fileName=textBox3.Text.Trim(); 
   //远程主机 
   string hostName=textBox1.Text.Trim(); 
   //端口 
   int port=Int32.Parse(textBox2.Text.Trim()); 
   //得到主机信息 
   IPHostEntry ipInfo=Dns.GetHostByName(hostName); 
   //取得IPAddress[] 
   IPAddress[] ipAddr=ipInfo.AddressList; 
   //得到ip 
   IPAddress ip=ipAddr[0]; 
   //组合出远程终结点 
   IPEndPoint hostEP=new IPEndPoint(ip,port); 
   //创建Socket 实例 
   Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
   try 
   { 
   //尝试连接 
   socket.Connect(hostEP); 
   } 
   catch(Exception se) 
   { 
   MessageBox.Show("连接错误"+se.Message,"提示信息 
   ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 
  } 
  //发送给远程主机的请求内容串 
  string sendStr="GET / HTTP/1.1\r\nHost: " + hostName + 
  "\r\nConnection: Close\r\n\r\n"; 
   //创建bytes字节数组以转换发送串 
   byte[] bytesSendStr=new byte[1024]; 
   //将发送内容字符串转换成字节byte数组 
   bytesSendStr=Encoding.ASCII.GetBytes(sendStr); 
  try 
  { 
  //向主机发送请求 
  socket.Send(bytesSendStr,bytesSendStr.Length,0); 
  } 
  catch(Exception ce) 
   { 
   MessageBox.Show("发送错误:"+ce.Message,"提示信息 
   ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 
   } 
   //声明接收返回内容的字符串 
   string recvStr=""; 
   //声明字节数组,一次接收数据的长度为1024字节 
   byte[] recvBytes=new byte[1024]; 
   //返回实际接收内容的字节数 
   int bytes=0; 
  //循环读取,直到接收完所有数据 
  while(true) 
  { 
  bytes=socket.Receive(recvBytes,recvBytes.Length,0); 
  //读取完成后退出循环 
  if(bytes〈=0) 
  break; 
  //将读取的字节数转换为字符串 
  recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes); 
  } 
  //将所读取的字符串转换为字节数组 
  byte[] content=Encoding.ASCII.GetBytes(recvStr); 
   try 
   { 
   //创建文件流对象实例 
   FileStream fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite); 
  //写入文件 
  fs.Write(content,0,content.Length); 
  } 
  catch(Exception fe) 
   { 
   MessageBox.Show("文件创建/写入错误:"+fe.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 
   } 
   //禁用Socket 
   socket.Shutdown(SocketShutdown.Both); 
   //关闭Socket 
   socket.Close(); 
   } 
   }


   

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式