首页 > c#, 网络编程 > 一个简单c#的socket连接例子源码

一个简单c#的socket连接例子源码

建立一个解决方案,分别建立两个控制台应用程序,一个是client端,一个是server端,本例子源码来自C#网络编程技术与实践第一章具体如下:程序运行先运行server端,再运行客户端,这里客户端运行
data = Encoding.ASCII.GetString(buffer, 0, recv);
                Console.WriteLine(data);

这段代码运行乱码,具体解决下篇介绍

using System;
using System.Net.Sockets;
using System.Net;

namespace serversocket
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket client;
            int recv;
            //byte[] message = new byte[1024];
            Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            IPAddress adr = IPAddress.Parse("192.168.1.119");
            IPEndPoint ep = new IPEndPoint(adr, 3000);

            ServerSocket.Bind(ep); //类似于客户机的connect()方法
            ServerSocket.Listen(3); //开始监听

            while (true)
            {
                if ((client = ServerSocket.Accept()) != null)
                {
                    Console.WriteLine("连接上...发送数据....");
                    //欲发送的字节数组,以0为结束标记

                    byte[] message = { 10, 20, 30, 40, 50, 60, 0 };
                    //send方法返回发送的字节数
                    Console.WriteLine("总计将发送" + client.Send(message) + "个字节的数据");
                    Console.WriteLine("结束.");
                    client.Close();
                    break;
                }
            }
        }
    }
}

using System;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace clientsocket
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); //建立客户端套接字
            IPAddress adr = IPAddress.Parse("192.168.1.119");
            IPEndPoint ep = new IPEndPoint(adr, 3000);

            Server.Connect(ep); //完成绑定

            byte[] buffer = new byte[255];
            String data = null;
            int recv = 0;
            recv = Server.Receive(buffer);

            if (recv > 0)
            {
                Console.WriteLine("连接上...");
                Console.WriteLine("从服务器接收数据...");

                data = Encoding.ASCII.GetString(buffer, 0, recv);
                Console.WriteLine(data);
                while (true)
                {
                    String input;
                    input = Console.ReadLine();
                    if (input == "exit")
                    {
                        break;
                    }
                    Server.Send(Encoding.ASCII.GetBytes(input));
                }

                Console.WriteLine("连接断开...");
                Server.Shutdown(SocketShutdown.Both);
                Server.Close();
            }

        }
    }
}

原创文章转载请注明出处:云飞扬IT的blog

本文链接: http://www.ajaxcn.net/archives/626

分类: c#, 网络编程 标签: , ,
一键分享到:新浪微博分享  分享到网易微博    转贴到开心网  推荐到豆瓣  分享到QQ空间    RSS订阅
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.