Linux运行c#_在控制台运行一个java程序

Linux运行c#_在控制台运行一个java程序1、创建控制台程序如上图所示,选择语言为linux,我用的VS2019,.Net5.0,一直点下一步,创建。2、创建TCP服务端程序usingLinuxTcpApp.TcpServer;usingSystem;usingSystem.Net;namespaceLinuxTcpApp{classProgram{privatestaticAsyncTcpServertcpServer;staticvoidMain(s

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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://javaforall.net/197332.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • uat环境和生产环境的区别_angular 生产环境 相对路径无效

    uat环境和生产环境的区别_angular 生产环境 相对路径无效 本人研发小白一名,时间:2017年12月21(周四),坐标:上海。项目上线,测试环境正常,上UAT环境后访问不到数据,于是开始步步分析,细细琢磨,最终成功上UAT,但影响了上生产环境的时间,造成项目延时发布,第一次遇到这么奇怪的事情,之后就是2017年12月26(周二)的上生产环境,不过可怕的事情还是发生了:本地、测试、UAT环境都正常,生产环境有访问不到数据,直到12月27号2:00才解决,…

    2022年9月30日
    0
  • nginx多域名配置

    nginx多域名配置

    2022年2月8日
    33
  • Java开发经典实战!java编程培训学校排名

    Java开发经典实战!java编程培训学校排名GC概述垃圾收集(GarbageCollection)通常被称为“GC”,由虚拟机“自动化”完成垃圾回收工作。思考一个问题,既然GC会自动回收,开发人员为什么要学习GC和内存分配呢?为了能够配置上面的参数配置?参数配置又是为了什么?“当需要排查各种内存溢出,内存泄露问题时,当垃圾成为系统达到更高并发量的瓶颈时,我们就需要对GC的自动回收实施必要的监控和调节。”JVM中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生随线程而灭。栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。它们的

    2022年7月7日
    27
  • oninput事件

    oninput事件js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变化的,复制粘贴也不能监听到,于是就用到了oninput事件来监听文本框value值的改变。由于是手机端页面没有考虑IE这货。js代码如下://计算文本输入统计(function

    2022年6月11日
    81
  • android开发揭秘!全靠这份Android知识点PDF大全,附答案[通俗易懂]

    android开发揭秘!全靠这份Android知识点PDF大全,附答案[通俗易懂]Glide缓存简介Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。在缓存这一功能上,Glide又将它分成了两个模块,一个是内存缓存,一个是硬盘缓存。这两个缓存模块的作用各不相同,内存缓存的主要作用是防止应用重复将图片数据读取到内存当中,而硬盘缓存的主要作用是防止应用重复从网络或其他地方重复下载和读取数据。内存缓存和硬盘缓存的相互结合才构成了Glide极佳的图片缓存效果,那么接下来我们就分别来分析一下这两种缓存的使用方法以及它们的实现原理。我认识很多优秀的Android工程师,他们丝毫

    2022年5月3日
    56
  • 二叉树的前序、中序、后序三种遍历

    二叉树的前序、中序、后序三种遍历二叉树的前序、中序、后序三种遍历

    2022年4月23日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号