
1、以管理员身份运行cmd;
2、输入命令reg add "HKEY_CLASSES_ROOT\batfile\shell\open" /v HasLUAShield /t REG_SZ;
3、执行后会在bat右键菜单上添加UAC小盾牌;
4、运行bat时会经过UAC提权就可以以管理员身份运行。
这个主要是要对socket的基本通讯流程比较熟悉,socket server端的流程是
建立socket
bind到特定的端口
listen指定连接数量
accept接受连接
建立连接后用read/write通讯
完成后用close清理资源
import socket 导入socket库
host='' 指明需要绑定的ip,为空应该是绑定本机所有Ip
port=51423 绑定的端口号
s=socketsocket(socketAF_INET,socketSOCK_STREAM) 创建socket
ssetsockopt(socketSOL_SOCKET,socketSO_REUSEADDR,1) 设置socket的属性
sbind((host,port)) 绑定端口
slisten(1) 设置只允许一个client连接
print ("Server is running on port %d;press Ctrl-C to terminate" % port) 打印信息,提示端口号
while 1: 死循环等待连接
clientsock,clientaddr=saccept() 等待直至有client连接,分别返回通讯用的socket和client的地址
clientfile=clientsockmakefile('rw',0) 创建用于通讯用的虚拟文件
clientfilewrite("Welcome,"+str(clientaddr)+"\n") 向client发送消息
clientfilewrite("please enter a string:") 向client发送消息
line=clientfilereadline()strip() 读取client消息
clientfilewrite("you entered %d characters\n" % len(line)) 向client发送消息
clientfileclose() 关闭虚拟文件
clientsockclose() 关闭通讯用socket,通讯结束
Socket TCP
反射API介绍
4Java Socket编程 TCP 协议编程
1) TCP工作模型: 先找
堂(主机/IP), 到食堂以后找窗口
(Socket/套接字 端口号), 服务员等待连接,客户向服务员发起连接
连接以后, 一个窗口可以为每个客户安排一个服务员(线程)提供服务,
每个服务过程可以双向交流通讯(流), 通讯完成后要关闭连接
5 TCP 服务端编程(食堂)(javaio,javanet,javalang)
1) 创建ServerSocket实例绑定一个服务端口(Socket/套接字 端口号)
2) 开始ServerSocket实例 的监听, 等待客户端的连接
3) 如果有客户连接进来, 就获得了客户的套接字(Socket)实例
客户的套接字(Socket)实例中包括与客户端建立的连接流
4) 为这个客户(Socket) 创建一个服务线程, 提供服务(run方法)
5) 继续等待下一个连接, 返回到2)
6) 服务线程 完成通讯服务过程
7) 端口号: 0~65535, 1K以下留给系统使用
6 TCP 客户端编程
1) 创建Socket 实例, 连接到服务器端, 成功创建s就表示连接到了
服务器
Socket s = new Socket("host", port)
2) 客户端 Socket 与服务器端 Socket 对应, 都包含输入, 输出流
客户端的sgetInputStream() 连接于服务器sgetOutputStream()
客户端的sgetOutputStream()连接于服务器sgetInputStream()
3) 使用线程处理 网络流
7 Java 反射
1) 反射是Java自我管理(类, 对象)的机制
2) 可以通过反射机制发现对象的类型 发现类型的方法/属性/构造器
3) Java 反射 可以创建对象 并 访问任意对象方法和属性等
4) Class 加载
类加载到内存: java 将磁盘类文件加载到内存中,为一个对象(实例)
这个对象是Class的实例, 也就是 这些对象都是Class实例
5)Class 实例代表Java中类型, 基本类型的类型: intclass, longclass
类类型 Class 实例获得如下:
Class cls = Stringclass;
Class cls = ClassforName("javalangString");
Class cls = "abc"getClass();
以上方法获得cls 是同一个对象, 就是String 类内存加载的结果
package javase2day06ftp;
import javaioBufferedOutputStream;
import javaioFile;
import javaioFileOutputStream;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javanetSocket;
import javautilScanner;
/
ftp 客户端 可以使用命令 ls pwd get
/
public class FtpClient {
public static void main(String[] args)
throws IOException{
FtpClient client = new FtpClient();
clientopen();
}
public void open() throws IOException{
Socket s = new Socket("localhost", 9000);
InputStream in = sgetInputStream();
OutputStream out = sgetOutputStream();
//处理客户端对服务器的请求
new RequestProcess(out)start();
//处理服务器的反馈信息
new ResponseProcess(in)start();
}
//处理客户端对服务器的请求
class RequestProcess extends Thread{
OutputStream out;
public RequestProcess(OutputStream out) {
thisout = out;
}
public void run() {
try{
Scanner sc = new Scanner(Systemin);
while(true){
String s = scnextLine();
IOUtilsprintln(out, s);
if(sequals("bye")){
Systemexit(0);
}
}
}catch(IOException e){
eprintStackTrace();
}
}
}
class ResponseProcess extends Thread{
InputStream in;
public ResponseProcess(InputStream in) {
thisin = in;
}
public void run() {
try{
while(true){
String header = IOUtilsreadLine(in);
if(headerstartsWith("text,")){
show(header,in);
}else if(headerstartsWith("file,")){
save(header, in);
}
}
}catch(IOException e){
eprintStackTrace();
}
}
}
public void show(String header, InputStream in)
throws IOException {
int n = IntegerparseInt(headersplit(",")[1]);
for(int i=0; i<n; i++){
String s = IOUtilsreadLine(in);
Systemoutprintln(s);
}
}
public void save(String header, InputStream in)
throws IOException{
File dir = new File("ftp");
if(!direxists()){
dirmkdir();
}
//header: file,10,filename
String[] data = headersplit(",");
long length = LongparseLong(data[1]);
String filename = data[2];
File file = new File(dir, filename);
BufferedOutputStream out =
new BufferedOutputStream(
new FileOutputStream(file));
for(long i=0; i<length; i++){
int b = inread();
outwrite(b);
}
outclose();
}
}
package javase2day06ftp;
import javaioFile;
import javaioFileInputStream;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javanetServerSocket;
import javanetSocket;
/
模拟FTP服务器, 支持命令pwd,ls,get file
协议: type,length,value TLV格式
文本: text,5\nline1\nline2\nline3\nline4\nline5\n
文件: file,4,filename\n 41 42 43 44
text,5\nline1\nline2\nline3\nline4\nline5\nfile,4,filename\n 41 42 43 44
/
public class FtpServer {
public static void main(String[] args)
throws IOException{
FtpServer server = new FtpServer();
serverstart();
}
public void start() throws IOException{
ServerSocket ss = new ServerSocket(9000);
while(true){
Socket s = ssaccept();
new Agent(s)start();
}
}
class Agent extends Thread{
Socket s;
public Agent(Socket s) {
thiss = s;
}
public void run() {
try{
InputStream in = sgetInputStream();
OutputStream out = sgetOutputStream();
//向客户端发送, 先发协议头,再发送文本行
outwrite("text,1\n"getBytes());//协议头
//发送消息内容, 一行文本消息
outwrite("欢迎使用FTP演示服务器!\n"getBytes());
outflush();
while(true){
//读取客户端发送到命令
String cmd = IOUtilsreadLine(in)trim();
if("pwd"equals(cmd)){//显示当前目录
pwd(out);
}else if("ls"equals(cmd)){
ls(out);
}else if(cmdstartsWith("get ")){
get(cmd, out);
}else if("bye"equalsIgnoreCase(cmd)){
IOUtilsprintln(out, "text,1");
IOUtilsprintln(out, "Bye, Bye!");
sclose();
}else{
outwrite("text,1\n"getBytes());//协议头
outwrite("只支持pwd,ls,get,bye!\n"getBytes());
outflush();
}
}
}catch(IOException e){
eprintStackTrace();
}
}
}
public void pwd(OutputStream out)
throws IOException{
File dir = new File("");
IOUtilsprintln(out, "text,1");
IOUtilsprintln(out, dirgetCanonicalPath());
}
public void ls(OutputStream out)
throws IOException{
File dir = new File("");
File[] files = dirlistFiles();
IOUtilsprintln(out, "text,"+fileslength);
for (File f : files) {
if(fisDirectory()){
IOUtilsprintln(out, "["+fgetName()+"]");
}else{
IOUtilsprintln(out, fgetName());
}
}
}
public void get(String cmd, OutputStream out)
throws IOException{
//cmd="get filename"
String name = cmdsplit("\\s+")[1];
File file = new File(name);
if(! fileexists()){
IOUtilsprintln(out, "text,1");
IOUtilsprintln(out, "没有文件呀!"+name);
return;
}
//文件协议头:
IOUtilsprintln(out,
"file,"+filelength()+","+name);
FileInputStream in =
new FileInputStream(file);
IOUtilscp(in, out);
outflush();
inclose();
IOUtilsprintln(out, "text,1");
IOUtilsprintln(out, "发送成功:"+name);
}
}
实现的方法和详细的 *** 作步骤如下:
1、第一步,打开计算机上的eclipse软件,然后依次单击左上角的“File”-->“New”-->“Project”选项,见下图,转到下面的步骤。
2、第二步,完成上述步骤后,通过搜索找到Web项目,输入关键字web,可以快速查询该Web项目,见下图,转到下面的步骤。
3、第三步,完成上述步骤后,创建Web项目时,输入项目名称,然后完成构建,继续 *** 作,见下图,转到下面的步骤。
4、第四步,完成上述步骤后,可以在Web项目中创建一个jsp文件,然后在“New”选项下选择“Other”选项来创建jsp文件,见下图,转到下面的步骤。
5、第五步,完成上述步骤后,在文档的新界面中,选择“jsp File”选项,输入jsp文件的名称,然后将创建一个空的jsp文件模板,见下图,转到下面的步骤。
6、第六步,完成上述步骤后,如果indexjsp是Web项目中的主页,则默认情况下,系统将在访问期间搜索indexjsp文件,见下图,转到下面的步骤。
7、第七步,完成上述步骤后,就获得了想要的结果了,见下图。这样,就解决了这个问题了。
首先利用
osremove() will remove a file
osrmdir() will remove an empty directory
shutilrmtree() will delete a directory and all its contents
写你的模块
利用Linux crontab定时任务运行这个模块。
还可以以守护进程的方式运行你的脚本。nohup <程序名> &
以上就是关于编写bat脚本实现以管理员执行服务器上的程序全部的内容,包括:编写bat脚本实现以管理员执行服务器上的程序、编写一个简单的python服务器程序,求下面代码的逐行注释!!、给出一个C++或Java编写的ftp服务器程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)