<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0065)http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html -->
<HTML><HEAD id=Head><TITLE>C#网络编程(基本概念和操作) - Part.1 - 张子阳 - 博客园</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META id=metaKeywords content="C,网络编程,基本概念和操作, , Part.1" name=keywords>
<META
content=本文是该系列第一篇,主要讲述了基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端。
name=description><LINK id=CommondCss
href="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/common.css" type=text/css
rel=stylesheet><LINK id=MainCss
href="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/style.css" type=text/css
rel=stylesheet><LINK id=SecondaryCss
href="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/customcss.css" type=text/css
rel=stylesheet><LINK id=CommondCss2
href="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/common2.css" type=text/css
rel=stylesheet><LINK id=RSSLink title=RSS
href="http://www.cnblogs.com/JimmyZhang/rss" type=application/rss+xml
rel=alternate><LINK id=RSDLink title=RSD
href="http://www.cnblogs.com/JimmyZhang/rsd.xml" type=application/rsd+xml
rel=EditURI>
<SCRIPT src="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/common.js"
type=text/javascript></SCRIPT>
<META content="MSHTML 6.00.2900.5726" name=GENERATOR></HEAD>
<BODY>
<FORM id=Form1 name=Form1 onsubmit="javascript:return WebForm_OnSubmit();"
action=1286300.html method=post>
<DIV><INPUT id=__EVENTTARGET type=hidden name=__EVENTTARGET> <INPUT
id=__EVENTARGUMENT type=hidden name=__EVENTARGUMENT> <INPUT
id=" __VIEWSTATE" type=hidden name=__VIEWSTATE> </DIV>
<SCRIPT type=text/javascript>
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</SCRIPT>
<SCRIPT src="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/WebResource.axd"
type=text/javascript></SCRIPT>
<SCRIPT language=JavaScript>
function ctlent(evt,id)
{
if(evt.ctrlKey && evt.keyCode == 13)
{
try
{
TempSave(id);
}
catch(ex)
{
}
finally
{
__doPostBack('AjaxHolder$PostComment$btnSubmit','')
}
}
}</SCRIPT>
<SCRIPT language=JavaScript>function SetReplyAuhor(author){document.getElementById('AjaxHolder_PostComment_tbComment').value+="@"+author+"\n";document.getElementById('AjaxHolder_PostComment_tbComment').focus();return false}</SCRIPT>
<SCRIPT src="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/ScriptResource.axd"
type=text/javascript></SCRIPT>
<SCRIPT
src="G:\程序\C#技巧\C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files\ScriptResource(1).axd"
type=text/javascript></SCRIPT>
<SCRIPT
src="G:\程序\C#技巧\C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files\ScriptResource(2).axd"
type=text/javascript></SCRIPT>
<SCRIPT src="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/js"
type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//]]>
</SCRIPT>
<!--done-->
<DIV id=home>
<DIV id=header>
<DIV id=blogTitle><A id=lnkBlogLogo
href="http://www.cnblogs.com/JimmyZhang/"><IMG id=blogLogo alt=返回主页
src="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/logo.gif"></A> <!--done-->
<H1><A class=headermaintitle id=Header1_HeaderTitle
href="http://www.cnblogs.com/JimmyZhang/">张子阳</A></H1>
<H2>静水流深 细水流长</H2></DIV><!--end: blogTitle 博客的标题和副标题 -->
<DIV id=navigator><!--done-->
<UL id=navList>
<LI><A class=menu id=MyLinks1_HomeLink href="http://www.cnblogs.com/">博客园</A>
</LI>
<LI><A class=menu id=MyLinks1_SpaceLink
href="http://space.cnblogs.com/">社区</A> </LI>
<LI><A class=menu id=MyLinks1_MyHomeLink
href="http://www.cnblogs.com/JimmyZhang/">首页</A> </LI>
<LI><A class=menu id=MyLinks1_NewPostLink
href="http://www.cnblogs.com/JimmyZhang/admin/EditPosts.aspx?opt=1">新随笔</A>
</LI>
<LI><A class=menu id=MyLinks1_ContactLink accessKey=9
href="http://www.cnblogs.com/JimmyZhang/contact.aspx?id=1">联系</A> </LI>
<LI><A class=menu id=MyLinks1_Admin
href="http://www.cnblogs.com/JimmyZhang/admin/EditPosts.aspx">管理</A> </LI>
<LI><A class=menu id=MyLinks1_Syndication
href="http://www.cnblogs.com/JimmyZhang/rss">订阅</A> <A class=aHeaderXML
id=MyLinks1_XMLLink href="http://www.cnblogs.com/JimmyZhang/rss"><IMG
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"
alt=订阅 src="C#网络编程(基本概念和操作) - Part_1 - 张子阳 - 博客园.files/rss.gif"></A> </LI></UL>
<DIV class=blogStats><!--done-->随笔- 80 文章- 0 评论- 1938 </DIV><!--end: blogStats --></DIV><!--end: navigator 博客导航栏 --></DIV><!--end: header 头部 -->
<DIV id=main>
<DIV id=mainContent>
<DIV class=forFlow>
<SCRIPT type=text/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
</SCRIPT>
<!--done-->
<DIV id=topics>
<DIV class=post>
<H1 class=postTitle><A class=postTitle2 id=AjaxHolder_ctl01_TitleUrl
href="http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286300.html">C#网络编程(基本概念和操作)
- Part.1</A> </H1>
<DIV class=clear></DIV>
<DIV class=postBody>
<DIV id=content>
<P>源码下载:<A
href="http://www.tracefact.net/SourceCode/Network-Part1-2.rar">http://www.tracefact.net/SourceCode/Network-Part1-2.rar</A></P>
<H1>C#网络编程(基本概念和操作) - Part.1</H1>
<H2>引言</H2>
<P>C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助。如果想要更加深入的内容,可以参考相关书籍。</P>
<P>本文是该系列第一篇,主要讲述了基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端;第二篇讲述了一个简单的范例:从客户端传输字符串到服务端,服务端接收并打印字符串,将字符串改为大写,然后再将字符串回发到客户端,客户端最后打印传回的字符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异步传输的方式来完成和第二篇同样的功能;第四篇则演示了如何在客户端与服务端之间收发文件;第五篇实现了一个能够在线聊天并进行文件传输的聊天程序,�