服务器:

第一步,准备socket套接字:Socket sockfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

第二步,准备Ip地址与端口号(为绑定做准备):IPAddress Ip = new IPAddress(new Byte[]{192.168.1.7});

:EndPoint point = new IPEndPoint(Ip,7788);

第三步,绑定Ip地址与端口号:sockfd.Bind(point);

第四步,监听客户端是否连接:sockfd.Listrn(1024);// 最大的连接数

第五步,记录及相应客户端的连接请求:Socket client_sockfd = sockfd.Accept();

第六步,向客户端发送数据:client_sockfd.Send(data);//data可能要做一些转换

第七步,接收数据:sockfd.Recv();

客户端与之相似,只需要做微小的改动即可。

客户端不需要绑定,只需要与服务器进行连接:sockfd.Connect(point); //sockfd是客户端的套接字

下面是一个没有用到线程的小示例:

Server

static void Main(string[] args)
        {
            Socket sockfd = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream,ProtocolType.Tcp);
            // 准备IP
//          IPAdderss Ip = new IPAdderss(new byte[]{192,168,1,7});
            IPAddress Ip = IPAddress.Parse("192.168.1.7");
            // 准备端口号
            EndPoint point = new IPEndPoint(Ip,5678);
            //绑定
            sockfd.Bind(point);
            //监听客户端的最大连接数
            sockfd.Listen(1024);
            //响应客户端的连接请求和记录客户端的Ip地址和端口号
            Socket Client_sockfd = sockfd.Accept();
            string message = "hello socket!";
            //Byte[] data = new byte[1024];
            // 向客户端发送数据
            Byte[] data = Encoding.UTF8.GetBytes(message);
            Client_sockfd.Send(data);

// 接收客户端发送的数据
            Byte[] data2 = new byte[1024];
            int lenth = Client_sockfd.Receive(data2);
            string buf = Encoding.UTF8.GetString(data2, 0, lenth);
            Console.WriteLine(buf);

Console.ReadKey();
        }
    }

Client

static void Main(string[] args)
    {
        Socket sockfd = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPAddress Ip = IPAddress.Parse("192.168.1.7");
        EndPoint point = new IPEndPoint(Ip, 5678);

sockfd.Connect(point);
        // 接收服务器发来的消息
        Byte[] data = new byte[1024];
        int lenth = sockfd.Receive(data);
        string message = Encoding.UTF8.GetString(data,0,lenth);
        Console.WriteLine(message);
        Console.WriteLine("请输入要发送的数据:");
        string buf = Console.ReadLine();
        Byte[] sdata = Encoding.UTF8.GetBytes(buf);
        sockfd.Send(sdata);
        Console.ReadKey();
    }

}

C#中的socket编程方法的更多相关文章

  1. QT中的SOCKET编程(QT-2.3.2)

    转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...

  2. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  3. 读懂Java中的Socket编程(转)

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  4. java中的socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  5. QT中的SOCKET编程

    转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...

  6. Go中的Socket编程

    在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和W ...

  7. 深入理解javascript中实现面向对象编程方法

    介绍Javascript中面向对象编程思想之前,需要对以下几个概念有了解: 1. 浅拷贝和深拷贝:程序在运行过程中使用的变量有在栈上的变量和在堆上的变量,在对象或者变量的赋值操作过程中,大多数情况先是 ...

  8. python进阶---Python中的socket编程

    初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...

  9. socket编程方法,概念

    "蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也.蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也." ------------------------------------- ...

随机推荐

  1. android中3种实现动画效果的方法

    3中实现动画的方法:ImageView imgView = (ImageView)findViewById(R.id.imageView_logo); //第一种动画方法,使用AlphaAnimati ...

  2. android 下载instagram动态中图片的demo

    最近迷上了刷instagram,里面的很多照片都特别喜欢,于是就想分享到朋友圈或者微博,奈何墙外不知墙内苦啊.于是只能想办法将它们保存到本地,既可以做壁纸也能分享给别人. 我发现每条ins的动态在ap ...

  3. Oracle inactive session (last_call_et)

    注意last_call_et的值, select s.status,s.last_call_et,s.* from v$session s where username='DDD'; 在本例中,开了个 ...

  4. web项目设计与开发——DBHelper3

    本次学习的内容为根据DBHelper对数据库里的数据进行增删改查 具体内容为: 一.编写程序 1.创建工程——Mangage    2.在src目录下创建五个包,分别为DAO,DBHelper,Ent ...

  5. Sqlserver的触发器的简单使用

    1,触发器有两种 (1)After触发器(之后触发) 触发器有个好处:就是你之前有过什么操作他会将你的操作的数据信息完整的保存下来,比如你删过什么信息,如果用触发器,那么删除后就会显示两行受影响,那么 ...

  6. 使用jstack分析java程序cpu占用率过高

    在项目中经常会碰到CPU占用率过高的问题,那么碰到这类问题应当如何处理呢?下面提供一种处理思路: 首先top -H -p <pid>以线程的模式查看java应用的运行情况,找到占用cpu或 ...

  7. 【转载】Git的安装与使用

    Git的安装与使用  转载来源:http://www.cnblogs.com/Bonker/p/3441781.html 1,下载git https://code.google.com/p/msysg ...

  8. hasLayout与Block formatting contexts的学习(上)

    hasLayout与Block formatting contexts的学习 @(css BFC)[IE hasLayout|妙瞳] hasLayout是什么? haslayout 是Windows ...

  9. 简单测试IIS下的UrlRewrite技术

    UrlRewrite即地址变换.它可以实现静态功能方便搜索引擎收录,比如http://***/news.asp?corangeid=11它可以变为htt://***/news-11.html.这样还实 ...

  10. Shell中read的选项及用法

    1. Read的一些选项 Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项. -a :将内容读入到数值中 echo -n "Input muliple ...