最基本的Socket编程C#
2010年04月09日
示例程序是同步套接字程序,功能很简单,只是客户端发给服务器一条信息,服务器向客户端返回一条信息;这里只是一个简单的示例,是一个最基本的socket编程流程,在接下来的文章中,会依次记录套接字的同步和异步,以及它们的区别。
下面是示例程序的简单步骤说明
服务器端:
第一步:用指定的端口号和服务器的ip建立一个EndPoint对像;
第二步:建立一个Socket对像;
第三步:用socket对像的Bind()方法绑定EndPoint;
第四步:用socket对像的Listen()方法开始监听;
第五步:接受到客户端的连接,用socket对像的Accept()方法创建新的socket对像用于和请求的客户端进行通信;
第六步:通信结束后一定记得关闭socket;
代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace server
{
class Program
{
static void Main(string[] args)
{
int port = 2000;
string host = "127.0.0.1";
/**////创建终结点(EndPoint)
IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例
/**////创建socket并开始监听
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
s.Bind(ipe);//绑定EndPoint对像(2000端口和ip地址)
s.Listen(0);//开始监听
Console.WriteLine("等待客户端连接");
/**////接受到client连接,为此连接建立新的socket,并接受信息
Socket temp = s.Accept();//为新建连接创建新的socket
Console.WriteLine("建立连接");
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
/**////给client端返回信息
Console.WriteLine("server get message:{0}", recvStr);//把客户端传来的信息显示出来
string sendStr = "ok!Client send message successful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
temp.Send(bs, bs.Length, 0);//返回信息给客户端
temp.Close();
s.Close();
Console.ReadLine();
}
}
}
server结果:
客户端:
第一步:用指定的端口号和服务器的ip建立一个EndPoint对像;
第二步:建立一个Socket对像;
第三步:用socket对像的Connect()方法以上面建立的EndPoint对像做为参数,向服务器发出连接请求;
第四步:如果连接成功,就用socket对像的Send()方法向服务器发送信息;
第五步:用socket对像的Receive()方法接受服务器发来的信息 ;
第六步:通信结束后一定记得关闭socket;
代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Client
{
class Program
{
static void Main(string[] args)
{
try
{
int port = 2000;
string host = "127.0.0.1";
/**////创建终结点EndPoint
IPAddress ip = IPAddress.Parse(host);
//IPAddress ipp = new IPAddress("127.0.0.1");
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndpoint实例
/**////创建socket并连接到服务器
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建Socket
Console.WriteLine("Conneting…");
c.Connect(ipe);//连接到服务器
/**////向服务器发送信息
string sendStr = "hello!This is a socket test";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串编码为字节
Console.WriteLine("Send Message");
c.Send(bs, bs.Length, 0);//发送信息
/**////接受从服务器返回的信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
Console.WriteLine("client get message:{0}", recvStr);//显示服务器返回信息
/**////一定记着用完socket后要关闭
c.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine("argumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException:{0}", e);
}
Console.WriteLine("Press Enter to Exit");
}
}
}
Client端结果:
本文来自CSDN博客,转载出处:http://blog.csdn.net/liushengpiaoxu/archive/2008/05/20/2462759.aspx
发表评论
-
linux 电源管理
2012-01-20 09:01 2180linux 电源管理 2011年06 ... -
memcached完全剖析
2012-01-20 09:01 773memcached完全剖析 2011年0 ... -
关于文件的一些总结
2012-01-20 09:01 931关于文件的一些总结 2010年08月29日 Create ... -
low level I/O和stream I/O
2012-01-20 09:01 797low level I/O和stream I/O 201 ... -
充分利用 Xerces-C++,第 1 部分
2012-01-20 09:01 924充分利用 Xerces-C++,第 1 ... -
利用VBS脚本让qq永远在线
2012-01-19 14:05 829利用VBS脚本让qq永远在线 2011年06月07日 让 ... -
vbs脚本实例
2012-01-19 14:05 889vbs脚本实例 2011年02月28日 rem 结束QQ ... -
vbs 脚本没事测试玩
2012-01-19 14:05 672vbs 脚本没事测试玩 2011年03月27日 Set ... -
VBS脚本文件大全
2012-01-19 14:05 877VBS脚本文件大全 2011年05月24日 一、自动打开 ... -
自动下载并运行的VBS脚本代码[转载]
2012-01-19 14:04 1249自动下载并运行的VBS脚本代码[转载] 2012年01月15 ... -
解决系统提示:内存不能为“read”或"written"的办法
2012-01-17 03:55 728解决系统提示:内存不能为“read”或"writte ... -
内存不能为“read”或"written"的解决
2012-01-17 03:55 625内存不能为“read”或"written" ... -
0x08e629ab 指令引用的 0x0000000c内存不能为read 怎么解决11
2012-01-17 03:54 14390x08e629ab 指令引用的 0x00 ... -
内存不能为read和无法定位程序输入点 +@于动态链接库上
2012-01-17 03:54 1462内存不能为read和无法定位程序输入点 +@于动态链接库上 ... -
操作系统为XP 控制面板中的“添加删除程序”打不开,显示“rundll32.exe 遇到问题需要关闭。
2012-01-17 03:54 2699操作系统为XP 控制面板中的“添加删除程序”打不开,显示“ru ... -
基于C#的Socket开发快速入门
2012-01-16 02:42 657基于C#的Socket开发快速 ... -
C# Socket多线程编程实例
2012-01-16 02:42 595C# Socket多线程编程实例 ... -
C++ socket编程(tcp udp)
2012-01-16 02:42 655C++ socket编程(tcp udp) 2011 ... -
Dev C++ 中socket编程
2012-01-16 02:41 1177Dev C++ 中socket编程 2010年06月07日 ...
相关推荐
C# 最基本的Socket编程C# Socke详解
C#raw Socket编程 C#raw Socket编程是指使用C#语言实现原始套接字(Raw Socket)的编程技术。原始套接字是一种网络编程接口,允许开发者在应用层实现网络封包监视和控制。 Windows Sockets 是一种网络编程接口,...
这个“最基本的C# Socket编程小例子”可能会包含一个简单的客户端和服务器端程序,分别实现上述步骤。通过运行这两个程序,初学者可以在本地环境中体验Socket通信的过程。 通过深入学习和实践,开发者可以进一步...
在 C# 中,我们可以使用 .NET Framework 的 System.Net.Sockets 命名空间中的 Socket 类来实现 Socket 编程。本篇将深入探讨如何使用 C# 进行 Socket 编程,特别是 ASP.NET 应用场景下的应用。 首先,我们来看一下...
本篇将深入探讨C# Socket编程实例,特别是通过“飞鸽传书”这个案例,我们将会学习如何使用C#构建一个简单的文件传输应用。 首先,让我们了解Socket的基本概念。Socket是操作系统提供的接口,用于在两台计算机之间...
C# Socket编程是网络通信领域中的重要组成部分,它允许开发者创建服务器和客户端应用程序,实现数据的传输。在本文中,我们将深入探讨C# Socket编程的经典实例及其源码,旨在帮助你理解和掌握网络通信的核心概念。 ...
本文将详细介绍C#版的基本Socket编程步骤,通过服务器端和客户端的典型代码进行演示。 首先,我们来看服务器端的实现: 1. 定义服务器的IP地址和端口号。在这里,我们使用"127.0.0.1"作为本地IP,端口号为2000。 ...
在IT行业中,网络通信是软件开发的一个重要领域,而Socket编程是实现网络通信的基础。本文将深入探讨基于C#的Socket通信编程,包括其基本原理、实现方式以及如何进行文件传输。 C#是一种广泛使用的面向对象的编程...
C# Socket编程是.NET框架中用于网络通信的重要组成部分,它提供了低级别的网络接口,使得开发者可以直接操作TCP/IP协议栈。本实例将通过一个详细的C# Socket编程实例来深入理解其核心概念和应用。 首先,Socket在C#...
理解C# Socket编程的基本原理和API使用,对于开发实时通信应用、网络服务、多用户游戏服务器等具有重要意义。掌握异步I/O操作可以显著提升网络应用程序的性能和用户体验。 总之,C# Socket编程是网络通信领域的关键...
在探讨C# socket编程的过程中,我们首先需要了解的是如何操作IP地址,这是进行网络通信的基础。C#中的IPAddress类提供了方便的方法来处理IP地址,比如Parse方法可以将字符串形式的IP地址转换为IPAddress对象。此外,...
总之,这个C#的Socket编程实例展示了如何构建一个简单的聊天应用程序,涉及了Socket的基本操作,包括连接、监听、发送和接收数据。通过理解和实践这个示例,开发者可以深入理解网络编程的基础,并为开发更复杂的网络...
通过以上介绍,我们了解了C# Socket编程的基本原理和TCP连接的生命周期。在实际开发中,根据"TheacherSever"和"StudentApp"的角色,可以构建出一个简单的教学互动系统,实现客户端和服务器间的双向通信。
在C#编程领域,网络通信是一个不可或缺的部分,而SuperSocket则是一个强大且易用的.NET Socket服务器框架。它为开发者提供了构建自定义网络应用服务的基础,使得处理TCP连接变得简单高效。本文将深入探讨SuperSocket...
C# Socket编程: C#是微软开发的一种面向对象的编程语言,它内置了丰富的库来支持网络通信,其中包括Socket类。Socket是网络编程的基础,它提供了进程间通信(IPC)的能力,使得一台计算机上的程序能够与其他计算机...
socket编程 采用c#代码实现,非常适合初学者入门开发
### C# Socket编程实例详解 #### 一、引言 Socket 编程是网络通信的基础技术之一,在 C# 中可以通过 System.Net.Sockets 命名空间提供的类来实现。本篇文章将通过一个具体的 C# Socket 编程实例来详细介绍 Socket ...
本文将深入探讨如何利用Socket编程在C#中实现局域网内的文件传输。 Socket,通常被称为套接字,是网络通信中的基本组件。它提供了一种在不同进程间进行数据交换的接口,无论这些进程是否在同一台计算机上。在C#中,...
C# Socket 编程完成控制台服务器端和 web 客户端(调试通过) C# Socket 编程是指使用 C# 语言实现的 Socket 编程技术,用于创建网络通信的服务器端和客户端程序。在本例中,我们将创建一个控制台服务器端和一个 ...
本文将详细探讨C#中Socket编程的相关知识点,并基于提供的"TCP"文件名,推测这是一个关于C# TCP Socket编程的实例。 首先,我们需要了解TCP(传输控制协议)的基本原理。TCP是一种面向连接的、可靠的、基于字节流的...