当前位置:首页 » 云服务器 » 在服务器怎么写程序

在服务器怎么写程序

发布时间: 2022-07-19 20:27:02

A. 怎么在服务器上运行写的java程序

1.先安装j2sdk
我安装路径是:D:\Program Files\Java\j2sdk

2.再安装eclipse
Eclipse是绿色软件,不需要安装,把下载回来的eclipse压缩解压就可以了
我安装的路径是:D:\Program Files\Java\eclipse

3.安装tomcat
下载回来的是一安装文件,按照安装提示进行就可以了
我安装的路径是:D:\Program Files\Java\Tomcat

4.安装eclipse插件
中文包
直接将压缩包NLpack-eclipse-SDK-3.0.x-win32内features和plugins两文件夹内的内容解压到eclipse文件夹内同名文件夹就可以了。
Tomcat插件
将压缩包tomcatPluginV3解压,把plugins文件夹内的内容解压到eclipse文件夹内同名文件夹就可以了。

三.环境配置

1.系统环境变量配置
右击“我的电脑”->高级->环境变量,
设置JAVA_HOME变量指向其安装的目录“D:\Program Files\Java\j2sdk”;
TOMCAT_HOME变量指向其安装的目录“D:\Program Files\Java\Tomcat”;
PATH变量中含有“%JAVA_HOME%\bin;”;
CLASSPATH变量含有“%JAVA_HOME%\lib\tools.jar;”;

2.eclipse中java运行环境的配置
在eclipse主窗口中,“窗口”->首选项->java->已安装的JRE,选我们已经安装的j2sdk

3. 配置Sysdeo Tomcat 插件
在eclipse主窗口中,“窗口”->首选项->tomcat,tomcat version 选 version 5.x(我们安装的版本),tomcat home 处填我们安装tomcat的路径,这里就是D:\Program Files\Java\Tomcat。
切换到Advanced选项,在tomcat base处再填我们安装tomcat的路径,这里就是D:\Program Files\Java\Tomcat。
切换到JVM Setting选项,确定jre是你已经安装的j2sdk版本,我们这里选j2sdk。
切换到Tomcat Manger App,为管理界面增加一个用户。
最后按应用按钮,然后在确定。

B. 如何用Web服务器编写网站程序

选好语言`~ asp/php/jsp/html
编好网站, 部署到web服务器, 输入服务器ip和端口, ok

C. 如何用网页语言编写一个服务器关机程序

//
引入必要的命名空间
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.Runtime.InteropServices;
//
提供DllImport等特性,是P/Invoke的关键
namespace
test
{
public
partial
class
Form1
:
Form
{
public
Form1()
{
InitializeComponent();
}
//
这个结构体将会传递给API。使用StructLayout(...特性,确保其中的成员是按顺序排列的,C#编译器不会对其进行调整。
[StructLayout(LayoutKind.Sequential,
Pack
=
1)]
internal
struct
TokPriv1Luid
{
public
int
Count;
public
long
Luid;
public
int
Attr;
}
//
以下使用DllImport特性导入了所需的Windows
API。
//
导入的方法必须是static
extern的,并且没有方法体。调用这些方法就相当于调用Windows
API。
[DllImport("kernel32.dll",
ExactSpelling
=
true)]
internal
static
extern
IntPtr
GetCurrentProcess();
[DllImport("advapi32.dll",
ExactSpelling
=
true,
SetLastError
=
true)]
internal
static
extern
bool
OpenProcessToken(IntPtr
h,
int
acc,
ref
IntPtr
phtok);
[DllImport("advapi32.dll",
SetLastError
=
true)]
internal
static
extern
bool
LookupPrivilegeValue(string
host,
string
name,
ref
long
pluid);
[DllImport("advapi32.dll",
ExactSpelling
=
true,
SetLastError
=
true)]
internal
static
extern
bool
AdjustTokenPrivileges(IntPtr
htok,
bool
disall,
ref
TokPriv1Luid
newst,
int
len,
IntPtr
prev,
IntPtr
relen);
[DllImport("user32.dll",
ExactSpelling
=
true,
SetLastError
=
true)]
internal
static
extern
bool
ExitWindowsEx(int
flg,
int
rea);
//
以下定义了在调用WinAPI时需要的常数。这些常数通常可以从Platform
SDK的包含文件(头文件)中找到
internal
const
int
SE_PRIVILEGE_ENABLED
=
0x00000002;
internal
const
int
TOKEN_QUERY
=
0x00000008;
internal
const
int
TOKEN_ADJUST_PRIVILEGES
=
0x00000020;
internal
const
string
SE_SHUTDOWN_NAME
=
"SeShutdownPrivilege";
internal
const
int
EWX_LOGOFF
=
0x00000000;
internal
const
int
EWX_SHUTDOWN
=
0x00000001;
internal
const
int
EWX_REBOOT
=
0x00000002;
internal
const
int
EWX_FORCE
=
0x00000004;
internal
const
int
EWX_POWEROFF
=
0x00000008;
internal
const
int
EWX_FORCEIFHUNG
=
0x00000010;
//
通过调用WinAPI实现关机,主要代码再最后一行ExitWindowsEx,这调用了同名的WinAPI,正好是关机用的。
private
static
void
DoExitWin(int
flg)
{
bool
ok;
TokPriv1Luid
tp;
IntPtr
hproc
=
GetCurrentProcess();
IntPtr
htok
=
IntPtr.Zero;
ok
=
OpenProcessToken(hproc,
TOKEN_ADJUST_PRIVILEGES
|
TOKEN_QUERY,
ref
htok);
tp.Count
=
1;
tp.Luid
=
0;
tp.Attr
=
SE_PRIVILEGE_ENABLED;
ok
=
LookupPrivilegeValue(null,
SE_SHUTDOWN_NAME,
ref
tp.Luid);
ok
=
AdjustTokenPrivileges(htok,
false,
ref
tp,
0,
IntPtr.Zero,
IntPtr.Zero);
ok
=
ExitWindowsEx(flg,
0);
}
private
void
button1_Click(object
sender,
EventArgs
e)
{
if
(radioButton1.Checked
==
true)
{
DoExitWin(EWX_SHUTDOWN);
}
else
{
Application.Exit();
}
//MessageBox.Show("2");
}
}
}

D. 怎么在linux服务器上运行程序

方法有很多,这里主要列举两种。假如要使pso在linux服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果。
# ./pso > pso.file & #直接在命令后加上&即可
解释:将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。
有些程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够使程序能始终在后台运行,需要使用nohup这个命令。
方法2在终端输入命令:
# nohup ./pso > pso.file &
解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。
三、常用任务管理命令
# jobs //查看任务,返回任务编号n和进程号
# bg %n //将编号为n的任务转后台运行
# fg %n //将编号为n的任务转前台运行
# ctrl+z //挂起当前任务
# ctrl+c //结束当前任务
# tail -f logs.txt //可以实时查看日志文件
注:如果要使在前台执行任务放到后台运行,则先要用ctrl+z挂起该任务,然后用bg使之后台执行。

E. 如何用python编写一个程序,在服务器后台运行,每天删除一些文件

首先利用

os.remove() will remove a file.
os.rmdir() will remove an empty directory.
shutil.rmtree() will delete a directory and all its contents.
写你的模块
利用Linux crontab定时任务运行这个模块。
还可以以守护进程的方式运行你的脚本。nohup <程序名> &

F. 如何用自己的电脑做服务器,用java语言写服务器程序

你指的服务器程序是指B/S(浏览器/服务器)
还是C/S(客户端/服务器)模式啊,不过不管你想写那种服务端程序首先都是要先安装JDK的,然后才开始开发,如果是B/S可以使用tomcat作为服务器,C/S的话就要自己写了

G. 如何实现在Linux下创建服务程序

Linux系统能提供强大可靠的网络服务,并有管理程序对服务进行管理。例如我们熟悉的Web、FTP和电子邮件等,它们既可以单独运行,也可以被守护进程inetd调用,而且运行得都非常好。但我们不能仅停留在赞叹中,下面就给出两个服务程序程序和一个客户程序的例子,介绍服务程序和客户程序之间是如何沟通的。另外还要编辑配置一些文件,让服务程序也能接受服务管理程序管理。

这两个服务程序功能相同,但一个是独立服务程序,另一个是被inetd调用的服务程序。这是TCP/IP网络服务的两大类,这里将两个程序放在一起是为了比较程序结构和运行方式。两服务程序都在Red Hat Linux 7.1和TurboLinux 7.0上调试通过。

独立服务器

TCP和UDP是两大TCP/IP数据传输方式,套接口是建立服务器客户机连接的机制,首先介绍它们建立通信联系的过程,然后给出一个TCP服务程序例子。

1.TCP套接口通信方式

对于TCP服务器端,服务程序首先调用建立套接口的函数socket(),然后调用绑定服务IP地址和协议端口号函数bind()。绑定成功后调用被动监听函数listen()等待客户连接,还要调用获取连接请求函数accept(),并一直阻塞到客户连接请求的到达,这个函数获取客户机IP地址和协议端口号。

对于TCP客户端,客户程序启动后后调用建立套接口函数socket(),然后调用连接函数connect(),此函数与服务器通过三次握手建立连接。

服务器和客户机建立连接后,就可以使用读函数read()和写函数write()收发数据了。数据交换完成后便各自调用关闭套接口函数close()删除套接口。TCP套接口通信方式见图1所示。

图1 TCP套接口通信方式

2.UDP套接口通信方式

UDP程序与TCP的区别是无需建立连接。服务器首先启动,然后等待用户请求。客户机启动后便直接向服务器请求服务,服务器接到请求后给出应答。

对于UDP服务器端,服务程序首先调用套接口函数socket(),然后调用绑定IP地址和协议端口号函数bind()。之后调用函数recvfrom()接收客户数据,调用sendto()向客户发送数据。

对于UDP客户端,客户机程序启动后调用套接口函数socket(),然后调用sendto()向服务器发送数据,调用recvfrom()接收服务器数据。

双方数据交换成功后,各自调用关闭套接口函数close()关闭套接口。UDP套接口通信方式见图2所示。

图2 UDP套接口通信方式

下面给出独立服务程序的例子。这个程序虽然简单,但是与复杂程序有着相同的结构。

//程序名:server.c
//功能:服务器从客户机读入一个字符,并将排在此字符后面的字符回送客户机
//服务器端口:9000
#include "sys/types.h"
#include "sys/socket.h"
#include "stdio.h"
#include "netinet/in.h"
#include "arpa/inet.h"
#include "unistd.h"
int main()
{
int pid; //用于存放fork()执行结果
int server_sockfd,client_sockfd; //用于服务器和客户机套接口描述符
int bind_flag,listen_flag; //用于存放bind()和listen()执行结果
int server_address_length,client_address_length; //作为服务器客户机地址长变量
struct sockaddr_in server_address; //作为服务器地址结构变量(含地址和端口)
struct sockaddr_in client_address; //作为客户机地址结构变量(含地址和端口)
if((pid=fork())!=0) //用fork()产生新进程
exit(0) ;
setsid() ; //以子进程开始下面的程序

函数socket(),创建一个套接口,成功则返回套接口描述符。

server_sockfd=socket(AF_INET,SOCK_STREAM,0);
if(server_sockfd<0)
{
printf(“socket error /n”);
exit(1);
}
server_address.sin_family=AF_INET;

函数htonl()用于将32位主机字节顺序转换为网络字节顺序,其中参数INADDR_ANY表示任何IP地址。

server_address.sin_addr.s_addr=htonl(INADDR_ANY);

函数htons()用于将16位主机字节顺序转换为网络字节顺序,其中的参数是绑定的端口号,读者可根据环境自行改动,目的是不与其它服务端口冲突。

server_address.sin_port=htons(9000);
server_address_length=sizeof(server_address);

函数bind()用于绑定本地地址和服务端口号,若调用成功返回值为0。

bind_flag=bind(server_sockfd,/
(struct sockaddr *)&server_address,/
server_address_length);
if(bind_flag<0)
{
printf(“bind error /n”);
exit(1);
}

函数listen(),指明服务器的队列长度,被动等待客户连接,调用成功返回值为0。

listen_flag=listen(server_sockfd,5);
if(listen_flag<0)
{
printf(“listen error /n”);
exit(1);
}

while(1)
{
char ch;

函数accept()等待和获取用户请求,为每个新连接请求创建一个新的套接口,调用成功返回新套接口描述符。

client_sockfd=accept(server_sockfd,/
(struct sockaddr *)&client_address,/
&client_address_length);

函数read()和write()用于在服务器和客户机之间传送数据,调用成功返回读和写的字节数。

函数close(),用于程序使用完一个套接口后关闭套接口,调用成功返回值0。其中的参数为accept()创建的套接口的描述符client_sockfd。

read(client_sockfd,&ch,1);
printf(“cli_ch=%c”,ch);
ch++;
write(client_sockfd,&ch,1);

close(client_sockfd);
}
}

程序完成后就可以使用命令进行编译。在命令行中输入“gcc -o server server.c”,将server.c编译成可执行程序server,这时便可用客户程序进行测试。在命令行执行“./server”启动服务程序,执行“netstat -na”查看有无server的服务端口。如果存在,则执行下面编写的客户程序“./client”。不过这仅是手工启动的方法,下面给出用服务管理程序管理server程序的方法。只要在目录/etc/rc.d/init.d下放入服务程序的脚本就能被服务程序读到。在命令行执行“touch server”创建文件server,并将文件属性改成可执行。在管理程序中并不能看到此服务名,脚本文件必须有一些结构才能被管理程序认为是服务程序脚本。

为了减少工作量,拷贝/etc/rc.d/init.d下脚本httpd,将拷贝脚本名命名为server,然后对其编辑。

(1)执行“cp httpd server”。

(2)用文本编辑器vi(其它编辑器亦可)将server打开进入编辑状态。首先用字符串server替换httpd。然后找到daemon server行,如果编写的程序放在变量PATH目录中,不需要修改此行;如果把服务程序放在其它目录中,就要写服务的全路径。例如程序在/root的目录中,就要写成daemon /root/server,还要删除“rm -f /var/run/server.pid”这一行。

(3)执行“chmod 755 server”,将server属性设定为可执行。

此时就可以用chkconfig、ntsysv等工具,在希望的运行级中增加这个新服务程序,然后测试客户机与服务器能否通信。

被xinetd调用的服务程序

在Linux系统中,有很多服务是被xinetd(较早版本使用的是inetd)超级守护服务器启动的。其实凡是基于TCP和UDP的服务都可使用超级守护进程启动,只是在服务量很大影响效率的情况下不被采用。

1.依赖xinetd启动的服务建立通信过程

为了与独立服务器程序比较,我们看一下依赖xinetd的服务器是如何启动的。

(1)xinetd启动时读取/etc/xinetd目录中的文件(早期版本为/etc/inetd文件),根据其中的内容给所有允许启动的服务创建一个指定类型的套接口,并将套接口放入select()中的描述符集合中。

(2)对每个套接口绑定bind(),所用的端口号和其它参数来自/etc/xinetd目录下每个服务的配置文件。

(3)如果是TCP套接口就调用函数listen(),等待用户连接。如果是UDP套接口,就不需调用此函数。

(4)所有套接口建立后,调用函数select()检查哪些套接口是活动的。

(5)若select()返回TCP套接口,就调用accept()接收这个连接。如果为UDP,就不需调用此函数。

(6)xinetd调用fork()创建子进程,由子进程处理连接请求。

◆ 子进程关闭所有其它描述符,只剩下套接口描述符。这个套接口描述符对于TCP是accept()返回的套接口,对于UDP为最初建立的套接口。然后子进程连续三次p()函数,将套接口描述符复制到0、1和2,它们分别对应标准输入、标准输出和标准错误输出,并关闭套接口描述符。

◆ 子进程查看/etc/xinetd下文件中的用户,如果不是root用户,就用调用命令setuid和setgid将用户ID和组ID改成文件中指定的用户。

(7)对于TCP套接口,与用户交流结束后父进程需要关闭已连接套接口。父进程重新处于select()状态,等待下一个可读的套接口。

最后调用配置文件中指定的外部服务程序,外部程序启动后就可与用户进行信息传递了。

2.为xinetd编写专门的服务程序

除了独立服务程序能被xinetd启动外,还可以为xinetd编写专门的程序。此处的例子程序与上面server.c功能相同。不过两者的程序区别是很大的,此例的代码仅相当于上面传输数据的部分。我们还将程序名定为server.c,所以不能放在相同目录中,同名仅是为了和上面程序对照。

#include "unistd.h"
int main()
{
char ch;
read(0,&ch,1);
ch++;
write(1,&ch,1);
}

将程序编译成可执行文件,并做些设置就可被xinetd启动。注意不要和上面的独立服务程序server一起启动,因为客户程序写得比较简单,访问的是固定端口,服务器都设成了相同的端口号。

(1)编辑/etc/services文件,在行末增加一条记录:

server 9000/tcp

(2)在目录/etc/xinetd.d下编写文件server,内容为:

service server
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /home/test/server (此处设置成自己程序所在的目录)
}

如果使用的是较早版本,则需在/etc/inetd.conf文件中添加下面的行:

server tcp nowait root /path/to/yourdirectory/server

(3)执行/etc/rc.d/initd.d/xinetd restart重新启动xinetd服务器。早期版本执行/etc/rc.d/initd.d/inetd restart重新启动inetd。

(4)执行netstat -an查看有没有server程序使用的端口号,如果有就可使用下面客户机程序进行测试了。

客户机程序

下面就客户机函数做一简单介绍。

//程序名client.c
/*功能:从客户的控制台输入一个字符,然后将这个字符送到服务器,并将服务器返回的字符显示出来*/
#include "sys/types.h"
#include "sys/socket.h"
#include "stdio.h"
#include "netinet/in.h"
#include "arpa/inet.h"
#include "unistd.h"
int main()
{
int sockfd;//
int address_len;
int connect_flag;
struct sockaddr_in address;
int connect_result;
char client_ch,server_ch;

函数socket()用于建立一个套接口,创建成功返回套接口描述符。

sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
printf(“sockfd error /n”);
}
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr(“192.168.0.1”);/*读者根据自己环境改成服务器地址*/
address.sin_port=htons(9000);

address_len=sizeof(address);

函数connect()用于与服务器建立一个主动连接,调用成功返回值为0。

connect_flag=connect(sockfd,(struct sockaddr *)&address,address_len);

if(connect_flag==-1)
{
perror(“client”);
exit(1);
}
printf(“Input a character :”);

函数scanf()用于从控制台输入一个字符,并将字符存入client_ch的地址。函数write()和read()用于传输数据。函数printf()在客户机屏幕上显示服务器传回的字符。函数close()关闭套接口。

scanf(“%c”,&client_ch);
write(sockfd,&client_ch,1);
read(sockfd,&server_ch,1);
printf(“character from server : %c/n”,server_ch);
close(sockfd);
exit(0);
}

执行命令“gcc -o client client.c”,将client.c编译成client。执行“./client”,在程序提示下输入一个字符,就能看到服务器传回的字符。

以上介绍的仅是简单的例子。平时见到的服务程序远比它复杂,而且很多是多协议服务程序或是多协议多服务程序。多协议服务程序就是在main()中分别创建供服务的TCP和UDP套接口。为每个服务分别写出相应程序好处是便于控制,但是这样每个服务都启动两个服务器,而它们的算法响应是一样的,就要耗费不必要的资源,并且出了问题排错也较困难。多服务是将不同的服务集成在一起由一个程序完成,可用一个数组表示服务,数组中的每一项表示某协议某服务的一种,这样很容易扩展程序的服务功能。

H. 如何在linux服务器中运行自己写的matlab程序

在服务器上安装LINUX版的MATLAB,然后在MATLAB下面运行你的MATLAB程序。

I. 如何编写Web服务器后台程序

写个线程类,给个flag当这个类的成员变量!
然后你服务启动 的时候就调用这个类呗!
把你要做的事情写在线程类里面,while(flag)!你想让它停的时候就把flag设成flase,让线程结束呗!

J. 问一个关于怎样写c#服务器程序的问题。

这个为什么要用到socket。。。
这个用socket做难道你准备去把一张出车单拼成一个很长的字符串然后再到client去解析么。。

这个是个典型的C/S应用啊。。

Server端public 出添加出车单,查询出车单,处理出车单等这样的接口。然后你可以通过web service或者wcf, .net remoting把这样的接口作为service发布出来。

然后所有的client通过对应的协议直接去调用server端的方法。。

这样,所有的人使用client连接同一个server。出车时一个人填写出车单,client将调用server的api直接添加进数据库。。 而领导查看的时候调用查询的api,从server端获取数据绑定到UI。。

也就是说,所有的数据库的增删改查是在server端完成。。而client只涉及简单的UI行为。。 例如AddOrder, client根据用户的输入,从空间获取值,组织好一个order对象,然后直接调用server端的AddOrder方法,然后Server端处理往数据库插入的整个过程。

如果你不想深入研究通信协议的话,你可以考虑看看web service ..上手很容易。。

热点内容
核心算法版 发布:2025-02-25 19:07:39 浏览:719
os系统和安卓系统哪个更好 发布:2025-02-25 19:06:04 浏览:326
steam上有哪些不吃配置的赛车游戏 发布:2025-02-25 19:02:35 浏览:686
如何在百旺系统导出终端配置文件 发布:2025-02-25 19:02:34 浏览:580
电脑如何配置内网ip 发布:2025-02-25 18:53:53 浏览:901
如何自己制作游戏脚本软件 发布:2025-02-25 18:32:01 浏览:808
1托8式存储 发布:2025-02-25 18:24:57 浏览:684
安卓10彩蛋为什么进不去 发布:2025-02-25 18:23:57 浏览:904
智能补货算法 发布:2025-02-25 18:18:59 浏览:514
无限游脚本 发布:2025-02-25 18:16:27 浏览:531