服务器:

第一步,准备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中的界面编程

    主要是用View以及ViewGroup,同时ViewGroup又是View的子类,充当容器. 主要有两种方法控制view的行为: 1.在XML布局文件中通过XML属性进行控制 2.在Java代码中通过 ...

  2. google guava 基本工具

    近期在项目中用到了google中的cache了解到guava里面的一些工具类和对集合的操作,封装的都比较下,没有时间自己去写,先做个标记, 参考文章如下: http://macrochen.iteye ...

  3. ArcGIS Desktop 与 Excel(转)

    来自:http://blog.csdn.net/kikitamoon/article/details/19043161 微软 OFFICE 产品中,Excel是很强大,并且平民化的表格制作工具.Arc ...

  4. 【排障】nginx在reload时候报错invalid PID number

    nginx在reload时候报错invalid PID number nginx重新加载配置文件时候报错,提示无效的PID: 解决的办法有二: 第一种思路是因为是加载配置文件报的错,所以用-c 选项指 ...

  5. Centos 6.4 python 2.6 升级到 3.5.2

    查看python的版本 #python -V Python 1.下载Python-2.5.2 #wget https://www.python.org/ftp/python/3.5.2/Python- ...

  6. linux版本qq的安装

    下载http://download.csdn.net/detail/gg296231363/3728117原谅我吧,1分而已,可以自己google,到处有. tar xzvf linuxqq_v1.0 ...

  7. Sqlserver基于流程控制

    流程控制语句只能在单个批处理段,用户自定义函数和存储过程中使用不能夸多个批处理或者用户自定义函数或者存储过程 批处理:一个或者多个语句组成的一个批处理,是因为所有语句一次性地被提交到一个sql实例,如 ...

  8. LVS概述

    LVS原理概述: lvs是一个开源软件,是Linux virtual server的简写,即linux虚拟服务器,是一个虚拟的服务器集群系统,lvs集群采用ip负载均衡技术和基于内容的请求分发技术.将 ...

  9. Java的基础概念

    JDK (Java Development Kit) Java Developer Kit contains tools needed to develop the Java programs, an ...

  10. JavaScript学习笔记(9)——JavaScript语法之流程控制

    javascript的流程控制语句与大部分类c语言一致.大致如下: 一.if if...else if...else if....else if....else..... 二.switch(变量){ ...