【TCP】

服务器端:无目标插座升级为有目标插座后,就可以通过有目标的插座收发数据

客户端:

实战:此案例有利于理解Socket的工作流程。

缺点:服务器只能接收1个客户端的连接,因为只写了一个Accept;服务器与客户端都只能收、发一次

1、创建控制台程序SocketTcpServer,注意引用using System.Net; using System.Net.Sockets;

//1、创建socket
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//地址族、套接字类型、协议
//2、绑定本地ip和端口号(一个网卡就有一个ip,电脑可能有多个ip)
IPAddress ipAddress = IPAddress.Parse("192.168.3.3");//ip
EndPoint point=new IPEndPoint(ipAddress,);//指定ip和端口号
tcpServer.Bind(point);
//3、开始监听
tcpServer.Listen();//最大连接数
Socket clientSocket= tcpServer.Accept();//暂停当前线程,直到有客户端连接之后,才进行之后的代码
Console.WriteLine("一个客户端连接过来了");
//4、收发数据(使用有目标的插座)
//发数据
string message = "你好,我是服务器";
byte[] data= Encoding.UTF8.GetBytes(message);//字符串转成字节数组
clientSocket.Send(data); //发送的是字节数组
Console.WriteLine("向客户端发送了一条数据");
//收数据
byte[] data2 = new byte[];//收信息需开辟内存
int length=clientSocket.Receive(data2);//接收的是字节数组
string message2 = Encoding.UTF8.GetString(data2, , length);//字节转字符串,展示的是字符串
Console.WriteLine("接收到了客户端发送过来的消息:" + message2); Console.ReadKey();//防止一闪就退出

2、创建控制台程序SocketTcpClient,注意引用using System.Net; using System.Net.Sockets;

//1、创建socket
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2、连接远程的IP和端口号
IPAddress ipAddress = IPAddress.Parse("192.168.3.3");//字符串转IP
EndPoint point = new IPEndPoint(ipAddress, );
tcpClient.Connect(point);
//3、收发数据(使用有目标的插座)
//收数据
byte[] data=new byte[];//收信息需开辟内存
int length= tcpClient.Receive(data);//data数组接收数据,返回已接收的字节数
string message = Encoding.UTF8.GetString(data, , length);//转字符串,只转化接收到的数据,剩余的空字节没必要转化
Console.WriteLine("接收数据:"+message);
//发数据
Console.WriteLine("发送数据:");
string message2 = Console.ReadLine();
tcpClient.Send(Encoding.UTF8.GetBytes(message2));//发送的是字节数组 Console.ReadKey();//防止一闪就退出

3、先启动服务器,再启动客户端。

1、Socket通信的更多相关文章

  1. 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?

    这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...

  2. php简单实现socket通信

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  3. Socket通信类

    package com.imooc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  4. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  5. socket通信

    socket通信 一:socket基于Tcp连接,数据传输有保证 二:socket连接的建立过程: 1:服务器监听 2:客户端发出请求 3:建立连接 4:通信 三:一个简单的例子:服务器端每隔一段时间 ...

  6. Android之Socket通信、List加载更多、Spinner下拉列表

    Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务 ...

  7. .NET开源高性能Socket通信中间件Helios介绍及演示

    一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大 ...

  8. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  9. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  10. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

随机推荐

  1. Navicat远程无法创建数据库

    Navicat远程无法创建数据库 提示报错信息如下,说明是用户创建的权限不足. Error Code: 1044. Access denied for user 'root'@'%' to datab ...

  2. PAT A1035 Password (20)

    AC代码 注意创造函数条件中使用引用 输出语句注意单复数 #include <cstdio> #include <cstring> #include <iostream& ...

  3. 切换PHP版本导致Phalcon拓展失效

    公司使用PHP的Phalcon框架做后端.Phalcon最大的特点就是底层由C语言实现,使用Phalcon框架必须要安装php_phalcon.dll扩展.之前的是使用PHP7.2的版本,后面考虑性能 ...

  4. mssql 数据库“查询处理器用尽了内部资源,无法生成查询计划。”问题的处理

    在项目中动态拼接sql语句,使用union all连接结果集,每个查询语句都使用了in(几百个数值).语句如: ,,,..............................) UNION ALL ...

  5. github常用搜索技巧

    1.在项目名称,readme文件和描述中包含关键字seckill的项目seckill in:name,readme,description 2.fork大于500,stars大于500springbo ...

  6. 浅读vue-router源码,了解vue-router基本原理

    项目中使用vue-router的时候,会进行以下操作(可能具体不是这么写的,但是原理一样): 定义映射关系routes: 定义router实例的时候传入vue和参数{routes...}: 定义vue ...

  7. 收下这波 JS 技巧,从此少加班

    各种业务开发都离不开对数据的处理,然而遇到的很多数据都是不好处理的.这个时候就需要寻求搜索引擎的帮助.这种方法效率是非常低下的,而且根据作者的个性不能保证其对自己的口味.因此这篇文字包含了一份 JS ...

  8. vue项目性能优化总结

    在使用elementUI构建公司管理系统时,发现首屏加载时间长,加载的网络资源比较多,对系统的体验性会差一点,而且用webpack打包的vuejs的vendor包会比较大.所以通过搜集网上所有对于vu ...

  9. 6 java 笔记

    1 java的类通过构造器来创建该类的对象 2 java提供extends关键字来实现子类继承父类 3 初始化块总是在构造器调用之前被执行 4 可以吧java中的类当成一种自定义的类型 5 类定义的变 ...

  10. c#传入类名添加类对应的表数据

    添加方法: public int Insert<T>(T model) where T : class, new() { int sucess = 0; if (model is Temp ...