注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Dotnet >> C# >> Dotnet正文

c#(Socket)同步套接字代码示例

文章来源:IT专家网 作者:佚名 更新时间:2008-6-28 20:38:51 【 】 【加入收藏

    同步客户端套接字示例
    下面的示例程序创建一个连接到服务器的客户端。该客户端是用同步套接字生成的,因此挂起客户端应用程序的执行,直到服务器返回响应为止。该应用程序将字符串发送到服务器,然后在控制台显示该服务器返回的字符串。
    C#
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    public class SynchronousSocketClient {
    public static void StartClient() {
    // Data buffer for incoming data.
    byte[] bytes = new byte[1024];
    // Connect to a remote device.
    try {
    // Establish the remote endpoint for the socket.
    // This example uses port 11000 on the local computer.
    IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName())
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
    // Create a TCP/IP  socket.
    Socket sender = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp );
    // Connect the socket to the remote endpoint. Catch any errors.
    try {
    sender.Connect(remoteEP);
    Console.WriteLine("Socket connected to {0}",
    sender.RemoteEndPoint.ToString());
    // Encode the data string into a byte array.
    byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
    // Send the data through the socket.
    int bytesSent = sender.Send(msg);
    // Receive the response from the remote device.
    int bytesRec = sender.Receive(bytes);
    Console.WriteLine("Echoed test = {0}",
    Encoding.ASCII.GetString(bytes,0,bytesRec));
    // Release the socket.
    sender.Shutdown(SocketShutdown.Both);
    sender.Close();
    } catch (ArgumentNullException ane) {
    Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
    } catch (SocketException se) {
    Console.WriteLine("SocketException : {0}",se.ToString());
    } catch (Exception e) {
    Console.WriteLine("Unexpected exception : {0}", e.ToString());
    }
    } catch (Exception e) {
    Console.WriteLine( e.ToString());
    }
    }
    public static int Main(String[] args) {
    StartClient();
    return 0;
    }
    }
    同步服务器套接字示例 下面的示例程序创建一个接收来自客户端的连接请求的服务器。该服务器是用同步套接字生成的,
    因此在等待来自客户端的连接时挂起服务器应用程序的执行。该应用程序接收来自客户端的字符串,
    在控制台显示该字符串,然后将该字符串回显到客户端。来自客户端的字符串必须包含字符串“<EOF>”,
    以发出表示消息结尾的信号。

    C#
     复制代码
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    public class SynchronousSocketListener {
    // Incoming data from the client.
    public static string data = null;
    public static void StartListening() {
    // Data buffer for incoming data.
    byte[] bytes = new Byte[1024];
    // Establish the local endpoint for the socket.
    // Dns.GetHostName returns the name of the
    // host running the application.
    IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
    // Create a TCP/IP socket.
    Socket listener = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp );
    // Bind the socket to the local endpoint and
    // listen for incoming connections.
    try {
    listener.Bind(localEndPoint);
    listener.Listen(10);
    // Start listening for connections.
    while (true) {
    Console.WriteLine("Waiting for a connection...");
    // Program is suspended while waiting for an incoming connection.
    Socket handler = listener.Accept();
    data = null;
    // An incoming connection needs to be processed.
    while (true) {
    bytes = new byte[1024];
    int bytesRec = handler.Receive(bytes);
    data += Encoding.ASCII.GetString(bytes,0,bytesRec);
    if (data.IndexOf("<EOF>") > -1) {
    break;
    }
    }
    // Show the data on the console.
    Console.WriteLine( "Text received : {0}", data);
    // Echo the data back to the client.
    byte[] msg = Encoding.ASCII.GetBytes(data);
    handler.Send(msg);
    handler.Shutdown(SocketShutdown.Both);
    handler.Close();
    }
    } catch (Exception e) {
    Console.WriteLine(e.ToString());
    }
    Console.WriteLine("\nPress ENTER to continue...");
    Console.Read();
    }
    public static int Main(String[] args) {
    StartListening();
    return 0;
    }
    }

  • 上一篇Dotnet:

  • 下一篇Dotnet:
  • 最 新 热 门
     web.config配置文件中的 元素
     为网站添加业务层
     用SqlDataSource实现DataList嵌套DataList
     Visual Studio 2003插件的编写
     千条DOS命令收藏
     IIS 常见问题
     IIS需要的最小NTFS权限
     优化 .NET的性能
     设计模式与VB .net代码 外观模式,合成模式
     VB.net中介者模式
    最 新 推 荐
     Windows via C/C++ —进程(一)
     C#邮件发送程序
     扩展 ASP.NET 的客户端验证
     实现DataGridView中行的上下移动
     C#中的委托和事件
     与IDE相关的Attribute属性
     C#中using关键字的使用介绍
     C#FileStream复制大文件
     C#实用技巧:轻松实现对文件的操作
     C#实现所有经典排序算法
    相 关 文 章

    用SqlDataSource实现DataList嵌套DataList
    C#通过ADO.NET建表点实现方法
    asp.net+C#实现文件上传实现代码
    C#邮件发送程序
    C#中的委托和事件
    C#中using关键字的使用介绍
    C#FileStream复制大文件
    C#实用技巧:轻松实现对文件的操作
    C#实现所有经典排序算法
    c#生成的word文档

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用