精华内容
下载资源
问答
  • 服务端与客户端交互

    首先我们需要用到的是tcp传输协议。

    服务端地址为本地地址,这里说明一下“127.0.0.1”为所有本机电脑的本地地址。

    服务端创建流程

    先引入命名空间 

    using System.Net.Sockets;

    using System.Net;

    1.创建服务端套接字

    new Socket()  构造函数参数(IP地址类型(ipv4指xxx.xxx.xxx.xxx),套接字类型(Stream流TCP,报文UDP),协议类型)。

    2.创建ip地址,ip端口号

    IPAddress

    127.0.0.1永远代表本机ip地址

    IPEndPoint

    3.绑定服务器与ip端口号

    4.开启监听用函数listen();

    5.收发数据,用函数send()和recv(),或者read()和write(); 

     class Program
        {
            static void Main(string[] args)
            {
                //1.创建服务端套接字
                Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //2.创建服务端ip地址与端口号
                IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
                IPEndPoint ipEndPoint = new IPEndPoint(ipAddress,666);
                //3.服务端与ip地址端口号绑定
                serverSocket.Bind(ipEndPoint);
                serverSocket.Listen(50);//开始监听端口号,处理链接的队列
                Socket clientSocket =serverSocket.Accept();//接收一个客户端链接
                //向客户端发送消息
                string str = "Hello !客户端。。。";
                byte[] data = System.Text.Encoding.UTF8.GetBytes(str);
                clientSocket.Send(data);
                //接收客户端发送的消息
                byte[] dataBuffer = new byte[1024];
                int count =clientSocket.Receive(dataBuffer);//接收到的消息存储进数组缓存区,返回存储的长度。
                string msgReceive = Encoding.UTF8.GetString(dataBuffer, 0, count); //字节数组转为消息,需指定长度
    
                Console.WriteLine(msgReceive);
                Console.ReadKey();
                serverSocket.Close();
            }
        }

    客户端代码与服务端代码基本一致 

    创建套接字后建立与远程主机的链接

      class Program
        {
            static void Main(string[] args)
            {
                Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 666));
    
                //接收从服务器发送过来的消息
                byte[] data = new byte[1024];
                int count = clientSocket.Receive(data);
                string strReceive = Encoding.UTF8.GetString(data,0,count);
                Console.WriteLine(strReceive);
    
                //向服务器发送消息
                string strSend = Console.ReadLine();
    
                byte[] dataSend = Encoding.UTF8.GetBytes(strSend);
                clientSocket.Send(dataSend);
            }
        }

    一般情况下我们的服务端代码需运行在服务器上,ip地址取网络地址而不是局域网地址。

    TCP与UDP传输协议总结

    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保   证可靠交付
    3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
      UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
    4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
    5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
    6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

    另:开发过程中中文补全提示。.net4.5开发时函数提示不现实中文方法

    找到:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\zh-Hans的目录,全部复制,然后覆盖掉C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\zh-Hans就行了

    展开全文
  • 服务端与客户端交互

    2017-05-12 09:28:23
    //暂停当前线程直到有一个客户端链接过来之后进行下面的代码 string message="hello,欢迎你"; Byte[]data =Encoding.UTF8.GetBytes (message); cilentSocket.Send(data); Byte[] data2 = new byte...
    搭建服务器:
    服务器端代码:


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


    namespace sockerService
    {
    class MainClass
    {
    public static void Main (string[] args)
    {
    //1.创建socket
    Socket tcpServer=new Socket 
    (AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    //2.绑定IP和端口号
    IPAddress ipaddress=new IPAddress (new byte[]{xxx,xxx,x,xx} );
    EndPoint point=new IPEndPoint(ipaddress,7788);//IPEndPoint是对IP+端口号做了一层封装的类
    tcpServer.Bind(point);//向系统申请一个可用的IP个你端口号
    //3.开始监听()等待客户端做连接
    tcpServer.Listen(100);//最大连接数


    Socket cilentSocket=tcpServer.Accept ();//暂停当前线程直到有一个客户端链接过来之后进行下面的代码
    string message="hello,欢迎你";
    Byte[]data =Encoding.UTF8.GetBytes (message);
    cilentSocket.Send(data);


    Byte[] data2 = new byte[1024];
    int length2=cilentSocket.Receive (data2);
    string message3 = Encoding.UTF8.GetString (data2,0,length2);
    Console.WriteLine (message3);


    Console.ReadKey ();
    }
    }
    }




    客户端代码:
    using System;
    using System.Net.Sockets;
    using System.Net;
    using System.IO;
    using System.Text;
    using System.Threading.Tasks;


    namespace sockrtInfo
    {
    class MainClass
    {
    public static void Main (string[] args)
    {
    //1.创建socket
    Socket tcpClient = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


    //可以吧一个字符串的IP地址转换成一个IPADDRESS的对象
    IPAddress ipaddress = IPAddress.Parse ("xxx.xxx.x.xx");
    EndPoint point = new IPEndPoint (ipaddress,7788);
    //2/发起建立连接的请求
    tcpClient.Connect(point);//通过 IP+端口号定位到一个需要连接的服务器端
    byte[]data=new byte[1024];
    //这里传递一个BYTE数组,实际上是这个数组来接受数据
    int length=tcpClient.Receive (data);
    //只把接受到的数据转换
    string message=Encoding.UTF8.GetString (data,0,length);
    Console.WriteLine (message);


    //向服务器发送消息
    string message2=Console.ReadLine();
    tcpClient.Send (Encoding.UTF8.GetBytes (message2));


    Console.ReadKey ();


    }
    }
    }
    展开全文
  • android 服务端与客户端交互的例子,采用json数据格式,utf-8编码进行数据传输,例子可以直接运行,有源码
  • 自己写的一个服务端与客户端交互(sproto长连接)操作客户端的小demo 网关服务:服务端与客户端交互参考:云风 skynet/examples的watchdog.lua agent.lua 客户端参考 client.lua config的path文档目录参考:云风 ...

    Skynet_MongoDB_Demo

    代码地址
    自己写的一个服务端与客户端交互(sproto长连接)操作客户端的小demo
    1、网关服务:服务端与客户端交互参考:云风 skynet/examples的watchdog.lua agent.lua
    2、客户端参考 client.lua
    3、config 的 path文档目录参考:云风 skynet_sample 也可以自己修改很简单的
    4、我加了与mongodb交互的功能、也把sproto协议写出来了,主要的内容代码已注释
    mongodb的接口源码:mongo.lua 里面已经封装了bson decode 和 encode
    (使用参考test/testmongodb.lua)

    问题:其中有个有关watchdog的心跳包问题:
    ​ 这里师傅跟我分析了一下,如果服务端每5s发心跳(云风的代码就是demo这样子写的),上万人的服务器是不是会炸掉呢?? 所以这个心跳包的逻辑放客户端是不是更好一点??
    更好的框架参考:skynet_sample/src/service_package.c (这个是云风大佬写的新的,更好用)

    展开全文
  • 基于C语言socket编写的服务端客户端,实现了两者之间的信息传输
  • 3.处理服务端处理客户端的连接正常关闭和非正常关闭 1.异步接收客户端发送过来的消息,上一篇接受客户端消息是在主线程中等待客户端发送,会造成主线程运行阻塞,这里调整为异步接受 主要方法:BeginReceive(字节...
    1.增加服务端异步的消息接收
    2.修改服务器端开启异步处理客户端的请求
    3.处理服务端处理客户端的连接正常关闭和非正常关闭
    1.异步接收客户端发送过来的消息,上一篇接受客户端消息是在主线程中等待客户端发送,会造成主线程运行阻塞,这里调整为异步接受
    主要方法:BeginReceive(字节数组,数组读取偏移,读取长度,SocketFlags.None,相应异步操作完成时回调方法,接受操作的相关信息);//开始监听客户端数据的传递,当接收到客户端数据时才调用传入的回调函数

    2.同时接受多个客户端发送的消息。
    主要方法:BeginAccept(相应异步操作完成时回调方法,接受操作的相关信息)//开始一个异步操作来接受一个传入的链接尝试。

    3.客户端非正常关闭时服务端会抛出异常,客户端关闭是通知服务端
    Try{}catch(){}捕捉异常处理
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Net.Sockets;
    using System.Net;
    
    namespace JungleWarServer
    {
        class Program
        {
            static void Main(string[] args)
            {
                StartServerAsync();
                //StartServerSync();
                Console.ReadKey();
            }
            static void StartServerAsync()
            {
                //1.创建服务端套接字
                Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //2.创建服务端ip地址与端口号
                IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
                IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 666);
                //3.服务端与ip地址端口号绑定
                serverSocket.Bind(ipEndPoint);
                serverSocket.Listen(50);//开始监听端口号,处理链接的队列
    
                //Socket clientSocket = serverSocket.Accept();//接收一个客户端链接
                serverSocket.BeginAccept(StartClientServerAsync, serverSocket);
            }
    
            private static void StartClientServerAsync(IAsyncResult ar)
            {
                Socket serverSocket = ar.AsyncState as Socket;
                Socket clientSocket = serverSocket.EndAccept(ar);
                //向客户端发送消息
                string str = "Hello !客户端。。。";
                byte[] data = System.Text.Encoding.UTF8.GetBytes(str);
                clientSocket.Send(data);
                //异步接收客户端发送的消息,异步不阻塞主线程
                //开始监听客户端数据的传递,当接收到客户端数据时才调用传入的回调函数
                clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);
                serverSocket.BeginAccept(StartClientServerAsync, serverSocket);
                
            }
    
            static byte[] dataBuffer = new byte[1024];
            private static void ReceiveCallBack(IAsyncResult ar)
            {
                Socket clientSocket =null;
                try
                {
                    clientSocket = ar.AsyncState as Socket;
                    int count = clientSocket.EndReceive(ar);
                    if (count==0)
                    {
                        clientSocket.Close();
                        return;
                    }
                    string strReceive = Encoding.UTF8.GetString(dataBuffer, 0, count);
                    Console.WriteLine(strReceive);
                    clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);
                }
                catch (Exception ex)
                {
    
                    Console.WriteLine(ex.Message);
                    if (clientSocket!=null)
                    {
                        clientSocket.Close();
                    }
                }
              
            }
    
           static void StartServerSync()
            {
                //1.创建服务端套接字
                Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //2.创建服务端ip地址与端口号
                IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
                IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 666);
                //3.服务端与ip地址端口号绑定
                serverSocket.Bind(ipEndPoint);
                serverSocket.Listen(50);//开始监听端口号,处理链接的队列
                Socket clientSocket = serverSocket.Accept();//接收一个客户端链接
                //向客户端发送消息
                string str = "Hello !客户端。。。";
                byte[] data = System.Text.Encoding.UTF8.GetBytes(str);
                clientSocket.Send(data);
                //接收客户端发送的消息
                byte[] dataBuffer = new byte[1024];
                int count = clientSocket.Receive(dataBuffer);//接收到的消息存储进数组缓存区,返回存储的长度。
                string msgReceive = Encoding.UTF8.GetString(dataBuffer, 0, count); //字节数组转为消息,需指定长度
    
                Console.WriteLine(msgReceive);
                Console.ReadKey();
                serverSocket.Close();
            }
    
        }
    }
    客户端
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Net.Sockets;
    using System.Net;
    using System.Collections;
    
    namespace JungleWarClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 666));
    
                //接收从服务器发送过来的消息
                byte[] data = new byte[1024];
                int count = clientSocket.Receive(data);
                string strReceive = Encoding.UTF8.GetString(data, 0, count);
                Console.WriteLine(strReceive);
    
                //向服务器发送消息
                while (true)
                {
                    string strSend = Console.ReadLine();
                    if (strSend=="c")
                    {
                        clientSocket.Close();
                        return;
                    }
                    byte[] dataSend = Encoding.UTF8.GetBytes(strSend);
                    clientSocket.Send(dataSend);
                }
            }
    
        }
    }
    
    


    展开全文
  • 当我们客户端快速的向服务端发送短小消息时,服务端接受消息会出现粘包的情况,比如:当我没for循环的向服务端发送100次数字,而服务段可能只会受到10次消息,而其中发送的这些消息则是粘在了一起发送的,这就是粘包...
  • Yar:yet another rpc,这是它的全称。 关于一些基本介绍 http://www.laruence.com/2012/09/15/2779.html 可以去 鸟哥的博客去了解下。 我也简单介绍下用法,下面的代码来自鸟哥的博客。 ... serv
  • 备注:C表示RTSP客户端 S表示RTSP服务端 1. 先发OPTIONS命令,查询课用的方法 C->S:OPTIONS request //询问S有哪些方法可用  S->C:OPTIONS response //S回应信息中包括提供的所有可用方法  2. 发送 ...
  • 服务端与客户端交互流程

    千次阅读 2013-05-14 17:06:24
    一:交互示意图 二:具体实现 要求:1,在客户端要写明提交到的界面的名称,如图2.1所示  2,在接收端使用Request关键字,如图2.2所示 图示: 总体图: 提交端: 接收...
  • web 服务端与客户端交互

    万次阅读 2012-08-09 10:28:28
    Web server to client communication Technology   1. Traditional ... 在web应用中,客户断若想更新服务端数据,通过向服务端发送HTTP request, 等到服务器做出相应,返回视图并更新客户端。     缺
  • 1、首先用webStorm提供的模板创建服务端框架 file -> New -> Project 2.创建Node.js服务端框架 3、其他的文件都不需要改动,搭建自己的服务端需要创建自己的应用框架如user.js(名称自己随便写) 4、创建好自己的...
  • C表示RTSP客户端,S表示RTSP服务端 ①  C->S:  OPTION  request //询问S有哪些方法可用 S->C: OPTION response //S回应信息中包括提供的所有可用方法 ②  C->S:  DESCRIBE  request //...
  •  问题就出现在服务端接受到数据,插入数据库形成订单,处理完后返回成功与否的反馈信息给客户端时候。由于客户端主动关闭网络或由于信号不好,导致网络被迫关闭。  客户端无法接受到服务器反馈,而产生超时异常...
  • 刚刚开始学习如何通过socket去发送信息下边的案例也是书上的在这留下笔记  Socket API:java .net.... Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它
  • System.out.println("服务端捕获到客户端信息:######"+info); info = br.readLine(); } //关闭相关资源 socket.shutdownInput(); //服务端创建输出流,响应客户端请求 OutputStream os ...
  • 最近一直在学习提交接收端之类的问题,下午正好...一:交互示意图 二:具体实现 要求:1,在客户端要写明提交到的界面的名称,如图2.1所示 2,在接收端应用Request关键字,如图2.2所示 图示: ...
  • Java服务端客户端交互实例

    热门讨论 2013-04-15 17:51:24
    使用Java编写的服务器端与客户端交互小程序。代码简单易懂,具体内容请看我的博客:
  • HttpPost Gson服务端与客户端交互 客户端发送参数,服务器返回Json数据,客户端解析Json数据
  • TCP服务端客户端交互

    2016-01-06 16:11:32
    一个网络编程实验,TCP服务端与客户端交互,服务端回射客户端所发的内容,含实验报告
  • 首先注意一点:因为Servlet属于J2ee项目,所以要下载支持java web的IDETomcat服务器 新建一个Dynamic Web Project,在src创建一个类,继承...服务端: package com.java1234; import java.io.IOException;
  • 一般在于客户端显而易见的就是给客户展示数据的,而服务器端就是通过拿出数据库中的数据,再通过给数据做些整理,然后这些数据变成计算机能解析的语言,传递给客户端,然后客户端再将这些数据进行展示。 一般交互的...
  • Live555服务端与客户端交互解析

    千次阅读 2017-06-07 22:37:27
    客户端退出组播组,网络设备停止发送给客户端。所有的控制均由组播协议IGMP 相关进行控制。 II. 通过 RTSP 协议。其实 RTSP 协议就是一个媒体服务的控制协议。请参考 RFC2326 。请翻译下面一段话。 The Real ...
  • 今天复习了一下socket的知识,看了一些网上博客的代码,参考了一下自己也照着写了一个服务端与客户端的互撩demo 首先写一个客户端 package j2se; import java.io.BufferedReader; import java.io.BufferedWriter...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,347
精华内容 1,338
关键字:

服务端与客户端交互