服务器

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. python与pycharm安装

    1.python install 1.1 下载安装包 -  https://www.python.org/downloads 1.2 installl 1.2.1 双击exe安装文件 1.3 如果安装 ...

  2. python-----多线程、线程池、进程池

    import threadingimport time ###############################多线程################################------ ...

  3. 关于数据库DML、DDL、DCL区别

    总体解释:DML(data manipulation language):       它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据 ...

  4. [dpdk] dpdk编译成动态库使用 -- PCI port自动发现与pmd动态加载

    1.  修改配置文件 .conf, 设置如下变量的值. [root@D129 x86_64-native-linuxapp-gcc]# cat dpdk/x86_64-native-linuxapp- ...

  5. 函数datetime

    datetime import datetime.datetime print(datetime.now()) #2019-03-20 11:35:25.(471359)毫秒 # 时间对象 f = d ...

  6. nodejs 学习六 express 三种查询url参数方法

    req.param() 是被废弃的api req.params 俗点:取带冒号的参数 req.body 可以肯定的一点是req.body一定是post请求,express里依赖的中间件必须有bodyP ...

  7. json和jsonp的区别?

    json返回的是一串json格式数据:而jsonp返回的是脚本代码(包含一个函数调用): jsonp的全名叫做json with padding,就是把 json 对象用符合 js 语法的形式包裹起来 ...

  8. 在同一台电脑上部署多个tomcat服务器

    因为在写一些小的项目的时候,需要另外用到一台图片服务器,所以不得不开启多个tomcat了. 在这里我用的是tomcat 9.0,一个是正常时的tomcat,一个是图片服务器,在这里我就用tomcat1 ...

  9. rsyncd的配置和使用

    服务器端配置文件说明 # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for mo ...

  10. 20170725 Python 必须使用的Url编码

    -- 1 原因:在进行API 调用传参时,如果出现了和区分参数标识一样的特殊字符,那么就需要编码来作用 或者,传递的参数有敏感数据. 我的目的: Python开发的接口,C#调用传递参数 先用C# 进 ...