C#控制台程序如何发布到服务器Linux上运行
作者:QQ128619 发布时间:2022-07-17 05:57:52
标签:c#,控制台,发布
1、创建控制台程序
如上图所示,选择linux开发平台,我用的VS2019,.Net5.0,一直点下一步,创建。
2、创建TCP服务端程序
using LinuxTcpApp.TcpServer;
using System;
using System.Net;
namespace LinuxTcpApp
{
class Program
{
private static AsyncTcpServer tcpServer;
static void Main(string[] args)
{
Console.WriteLine("程序开始运行");
IPAddress ipAddress;
IPAddress.TryParse("0.0.0.0", out ipAddress);
tcpServer = new AsyncTcpServer(ipAddress, 9888);
tcpServer.ClientConnected += TcpServer_ClientConnected;
tcpServer.ClientDisconnected += TcpServer_ClientDisconnected;
tcpServer.PlaintextReceived += TcpServer_PlaintextReceived;
tcpServer.Start();
while (true)
{
Thread.Sleep(1);
}
}
private static void TcpServer_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs<string> e)
{
Console.WriteLine(e.Datagram);
tcpServer.SendAll(e.Datagram);
}
private static void TcpServer_ClientDisconnected(object sender, TcpClientDisconnectedEventArgs e)
{
Console.WriteLine("连接断开"+ e.TcpClient.Client.LocalEndPoint.ToString());
}
private static void TcpServer_ClientConnected(object sender, TcpClientConnectedEventArgs e)
{
Console.WriteLine("连接成功"+ e.TcpClient.Client.LocalEndPoint.ToString());
}
}
}
3、利用vs发布程序
我这里手动发布至文件夹,然后压缩上传到服务器
把文件放到了桌面,打开cmd利用SCP命令上传至服务器,有上传工具可以用工具上传,可以百度下载。
4、Ubuntu服务器安装.Net环境
安装命令如下:
sudo apt-get install dotnet-sdk-5.0
如果apt下载不了,请更新
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
5、解压运行tcp服务端程序
连接服务器工具我用的是Git Bash,使用ssh命令,登录解压命令用rar x linux-x64
进入解压后的文件夹查看tcp使用情况,使用命令netstat -apt
由上图所知,没有9888这个端口的服务启动过。
之后用dotnet 命令运行LinuxTcpApp.dll,即可启动程序
可以用调试助手,进行通讯测试程序是否有问题
6、服务器后台运行程序
使用nohup命令,让程序在后台运行。完整命令如下,参数可以百度了解。
再次查看,tcp使用情况,如下图所示:
至此利用C# 语言跨平台Tcp服务器程序开发部署完毕,当有大型程序任务开发时,此方法不推荐使用,最好使用容器,保证程序的运行的稳定性。
来源:https://blog.csdn.net/QQ128619/article/details/121518268


猜你喜欢
- 性能优化点:1.使用int不使用double。(单位用分不用元)也省去了还要用math.round四舍五入,把double类型数据只留小数点
- 本文讨论了Spring Data JDBC如何实现DDD中聚合根存储的设计思路,其中主要讨论了是不是每个实体都需要一个对应数据表,这种问题需
- 一、概述一共两个线程,一个线程生产产品,一个线程消费产品,使用同步代码块方法,同步两个线程。当产品没有时,通知生产者生产,生产者生产后,通知
- 在进行详解之前,我想先声明一下,本次我们进行讲解说明的是 Kafka 消息存储的信息文件内容,不是所谓的 Kafka 服务器运行产生的日志文
- 在Springboot项目中使用分页插件的时候 发现PageHelper插件失效了我导入的是:后来才发<dependency>
- 前言上一篇文章已经介绍了fluent-mybatis项目的构建,文章地址:Java Fluent Mybatis实战之构建项目与代码生成篇上
- Android InputAndroid Input指的是输入事件,主要是触摸滑动,当然还包括类似蓝牙外设的输入。Input涉及到的主要模块
- Java基本类型与byte数组之间相互转换,刚刚写的package cn.teaey.utils;import java.nio.chars
- 通用配置#下面介绍的整合JDBC和整合MyBatis都需要添加的实体类和配置数据库表#CREATE TABLE `user` ( `id`
- 源程序揭秘杨辉三角形性质: 每行数字左右对称,由 1 开始逐渐变大,然后变小,回到 1。 第 n 行的数字个数为 n 个。 第 n 行数字和
- 本文实例为大家分享了android传送照片到FTP服务器的具体代码,供大家参考,具体内容如下在安卓环境下可以使用,在java环境下也可以使用
- 本文实例为大家分享了android实现简单拼图游戏的具体代码,供大家参考,具体内容如下1.2.//使用回调接口,首先初始化pintuview
- 在任何的生产环境中我们都不可逃避并发这个问题,多线程作为并发问题的技术支持让我们不得不去了解。这一块知识就像一个大蛋糕一样等着我们去分享,抱
- 这几年都在搞前后端分离、RESTful风格,我们项目中也在这样用。前几天有人遇到了解析JSON格式的请求数据的问题,然后说了一下解析的方式,
- 前言说到对集合去重处理,第一时间想到的肯定是Linq的Distinct扩展方式,对于一般的值类型集合去重,很好处理,直接list.Disti
- 这篇文章主要介绍了spring boot 全局异常处理方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 前言碎语Disruptor是英国LMAX公司开源的高性能的线程间传递消息的并发框架,和jdk中的BlockingQueue非常类似,但是性能
- 一、概述有序数组中常常用到二分查找,能提高查找的速度。今天,我们用顺序查找和二分查找实现数组的增删改查。二、有序数组的优缺点优点:查找速度比
- 1 前言许多语言,例如 Perl ,Python 和 Ruby ,都有集合的本地支持。有些语言(例如Python)甚至将基本集合组件(列表,
- Result可以设定全局结果集,如:<struts> <constant name="struts