服务器

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading; namespace MyServer
{
class Socket_Server
{
public int port;
public IPAddress ip; private static Socket s_socket;
private static byte[] result = new byte[]; public void Init(string address, int port)
{
this.port = port;
ip = IPAddress.Parse(address);
} public void Connection()
{
s_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s_socket.Bind(new IPEndPoint(ip, port));
s_socket.Listen(); Thread st = new Thread(Listener);
st.Start();
} private void Listener()
{
while (true)
{
Socket c_socket = s_socket.Accept();
c_socket.Send(Encoding.UTF32.GetBytes("连接服务器成功!"));
Thread ct = new Thread(Receive);
ct.Start(c_socket);
}
} private void Receive(object socket)
{
Socket c_socket = (Socket)socket;
while (true)
{
try
{
int num = c_socket.Receive(result);
string info = Encoding.UTF32.GetString(result,, num);
Console.WriteLine(info);
c_socket.Send(Encoding.UTF32.GetBytes("消息回执"));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Close();
break;
}
}
} public void Close()
{
s_socket.Shutdown(SocketShutdown.Both);
s_socket.Close();
}
}
}

服务器-控制台

using System;

namespace MyServer
{
class Program
{
public static string inputValue; static void Main(string[] args)
{
Socket_Server server = new Socket_Server();
server.Init("127.0.0.1", );
server.Connection(); while (inputValue != "Exit")
{
inputValue = Console.ReadLine();
if (inputValue == "Close")
{
server.Close();
}
}
}
}
}

客户端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks; namespace Client
{
class Socket_Client
{
public int port;
public IPAddress ip; private static Socket c_socket;
private static byte[] result = new byte[]; public void Init(string address, int port)
{
this.port = port;
ip = IPAddress.Parse(address);
} public void Connection()
{
c_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
c_socket.Connect(new IPEndPoint(ip, port));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
ReceiveMessage();
} public void ReceiveMessage()
{
int len = c_socket.Receive(result, , , SocketFlags.None);
string message = Encoding.UTF32.GetString(result, , len);
Console.WriteLine(message);
} public void SendMessage(string message)
{
byte[] buff = Encoding.UTF32.GetBytes(message);
c_socket.Send(buff);
ReceiveMessage();
} public void Close()
{
c_socket.Close();
}
}
}

客户端-控制台

using System;

namespace Client
{
class Program
{
public static string inputValue; static void Main(string[] args)
{
Socket_Client client = new Socket_Client();
client.Init("127.0.0.1", );
client.Connection(); while (inputValue != "Exit")
{
inputValue = Console.ReadLine();
client.SendMessage(inputValue);
if (inputValue == "Close")
{
client.Close();
}
}
}
}
}

简易C# socket的更多相关文章

  1. 从零开始学android -- 简易的socket通信

    先来介绍下socket,网上摘抄点资料,免得自己打字了 网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 1.消息传递(管道.FIFO.消息队列) 2.同步(互 ...

  2. java版简易socket客户端

    android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...

  3. C# Socket 简易的图片传输

    关于网络的数据传输我就是个小白,所以今天学习一下简易的Socket图片传输. 客户端和服务器的连接咱们上次已经学过了,咱们先从简易的文件传输入手.下面开始代码分析了. Server.cs using ...

  4. 关于socket tcp 断线重连

    这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...

  5. (六十四)iOS的socket实现(C+OC混合实现)

    对于微博.微信朋友圈之类的网络通信,使用JSON完全可以满足需求,但是如果要制作网络游戏,就需要建立一个持久连接,这时候就要考虑使用socket. 在iOS上实现socket大体有两种方法,一是借助自 ...

  6. 谈一谈socket与java

    用java中socket实现socket聊天 1,      什么是socket Socket 是指网络套接字,什么是套接字呢?    这是网络上一种端对端的网络协议,端口就是进程号,socket在网 ...

  7. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  8. [Golang] 从零開始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)

    通过前两章,我们成功是写出了一套凑合能用的Server和Client,并在二者之间实现了通过协议交流.这么一来,一个简易的socket通讯框架已经初具雏形了,那么我们接下来做的.就是想办法让这个框架更 ...

  9. Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.

    Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: ​ ​  ​ 专业理解: socket是应用层与TCP/IP ...

随机推荐

  1. 如何在windows下安装Python(Python入门教程)

    第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64 ...

  2. winform窗体启动过程

    窗体启动执行顺序:FormShowFormPaintFormActivateFormResize 关闭窗体过程FormCloseFormDestroy 最小化再最大化:FormPaintFormRes ...

  3. 关于linux特殊含义的转义符\033

    格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033 ...

  4. 【数据库】left join(左关联)、right join(右关联)、inner join(自关联)的区别

    left join(左关联).right join(右关联).inner join(自关联)的区别 用一张图说明三者的区别: 总结: left join(左联接) 返回包括左表中的所有记录和右表中关联 ...

  5. wordpress用Elementor拖拽生成酷炫页面

    很多朋友看到wordpress网站做得很高大上,想知道是怎么做到的,其实很简单,用Elementor就能拖拽生成酷炫页面,ytkah就直接上干货了. 1.安装Elementor,到wordpress后 ...

  6. RN animated组动画

    代码: export default class AnimationGroupScene extends Component { constructor() { super() ) ) ) } com ...

  7. CentOS安装Docker CE

    安装Docker CE(免费版) docker EE企业版您可以根据需要以不同方式安装Docker CE: 大多数用户 设置Docker的存储库并从中进行安装,以便于安装和升级任务.这是推荐的方法. ...

  8. 组合覆盖与PICT的使用

    组合覆盖法是一种有效减少测试用例个数的测试用例设计方法.根据覆盖程度的不同,可以分为单因素覆盖.成对组合覆盖.三三组合覆盖等.其中又以成对组合覆盖最常用. 关于组合覆盖的更多内容,参考:http:// ...

  9. 【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)

    在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...

  10. model browser 不出现时

    1:当 创建 component 时, 创建完成后,没有出现model browser, 这时需要在model上面添加一个model,然后保存退出,重新进入,就会出现model browser