我安装MinGW和MSYS,补充C:\MinGW\bin到PATH,但我仍然无法在Windows上运行的Makefile cmd.我想运行cmd.exe并在那里键入,例如,make all但我的cmd说没有这样的命令.
我该怎么办?我不想使用MSYS shell,这不是重点.任何想法如何在Windows cmd中使用GNU Make,因为我可以在Ubuntu中使用它?我对此不感兴趣Cygwin.
我的意思是:我如何测量我的CPU花在功能执行上的时间和运行我的功能所需的挂钟时间?(我对Linux/Windows以及x86和x86_64感兴趣).看看我想做什么(我在这里使用C++,但我更喜欢C解决方案):
int startcputime, endcputime, wcts, wcte;
startcputime = cputime();
function(args);
endcputime = cputime();
std::cout << "it took " << endcputime - startcputime << " s of CPU to execute this\n";
wcts = wallclocktime();
function(args);
wcte = wallclocktime();
std::cout << "it took " << wcte - wcts << " s of real time to execute this\n";
Run Code Online (Sandbox Code Playgroud)
另一个重要问题是:这种类型的时间测量架构是否独立?
我想在Python中使用套接字编写一个简单的TCP服务器.服务器应将映像发送到连接的客户端.客户端应该接收图像.但是,就目前而言,客户端只接收图像的一部分,我甚至无法打开它.
服务器是使用select的多客户端,但这不是问题.我认为问题在于发送图像.
我希望"协议"在这里非常简单.
SERVER CLIENT
GET
<----------------
IMAGE
----------------->
END OF COMMUNICATION
Run Code Online (Sandbox Code Playgroud)
因此客户端只能向服务器发送"GET"消息,服务器在获得"GET"字符串后,应立即将整个映像发送给客户端.就是这样,沟通就结束了.
server.py
#!/usr/bin/env python
import random
import socket, select
from time import gmtime, strftime
image = 'image.png'
HOST = '127.0.0.1'
PORT = 6666
connected_clients_sockets = []
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen(10)
connected_clients_sockets.append(server_socket)
while True:
read_sockets, write_sockets, error_sockets = select.select(connected_clients_sockets, [], [])
for sock in read_sockets:
if sock == server_socket:
sockfd, client_address = server_socket.accept()
connected_clients_sockets.append(sockfd)
else:
try:
data = sock.recv(4096)
bytes = open(image).read()
if …Run Code Online (Sandbox Code Playgroud) 最近我写了一些代码(客户端和服务器)来发送图像 - 客户端只需将图像上传到服务器,只需使用socket模块:在Python中通过套接字(仅限)发送图像,图像无法打开.
但是,图像发送部分现在是我所关注的.这是我正在使用的原始图像:
在我的服务器代码(接收图像)中,我有以下几行:
myfile = open(basename % imgcounter, 'wb')
myfile.write(data)
data = sock.recv(40960000)
if not data:
myfile.close()
break
myfile.write(data)
myfile.close()
sock.sendall("GOT IMAGE")
sock.shutdown()
Run Code Online (Sandbox Code Playgroud)
但我不认为这是最好的方式.我想我应该实现服务器,以便它以块的形式接收数据:
#!/usr/bin/env python
import random
import socket, select
from time import gmtime, strftime
from random import randint
imgcounter = 1
basename = "image%s.png"
HOST = '127.0.0.1'
PORT = 2905
connected_clients_sockets = []
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen(10)
connected_clients_sockets.append(server_socket)
while True:
read_sockets, write_sockets, error_sockets = select.select(connected_clients_sockets, [], …Run Code Online (Sandbox Code Playgroud) 我想在我的echo客户端/服务器程序中进行相互身份验证.我正在使用python 2.7.12 and thessl`模块
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Run Code Online (Sandbox Code Playgroud)
我使用openssl命令生成了客户端和服务器的证书和密钥:
openssl req -new -x509 -days 365 -nodes -out client.pem -keyout client.key
openssl req -new -x509 -days 365 -nodes -out server.pem -keyout server.key
Run Code Online (Sandbox Code Playgroud)
我希望客户端验证服务器,我希望服务器验证客户端.但是,下面的代码显示了服务器端的一些错误:
Traceback (most recent call last):
File "ssl_server.py", line 18, in <module>
secure_sock = ssl.wrap_socket(client, server_side=True, certfile="server.pem", keyfile="server.key")
File "/usr/lib/python2.7/ssl.py", line 933, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 601, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 830, in do_handshake …Run Code Online (Sandbox Code Playgroud) 我用C和C++编写了Openssl的简单应用程序.我像这样编译它们:
gcc openssltest.c -o openssltest -lcrypto
g++ openssltest.cpp -o openssltest -lcrypto
Run Code Online (Sandbox Code Playgroud)
当你安装了Openssl时,它一切正常但是只有.
我想编译它,我可以在没有Openssl installend(类似Linux的操作系统)的操作系统上运行它们.我试过这个:
gcc -c openssltest.c -lcrypto -static
gcc openssltest.o -o openssltest -lcrypto -static
Run Code Online (Sandbox Code Playgroud)
和C++相同:
g++ -c openssltest.cpp -lcrypto -static
g++ openssltest.o -o openssltest -lcrypto -static
Run Code Online (Sandbox Code Playgroud)
但是有这些错误:
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0x19): undefined reference to `dlopen'
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0x2c): undefined reference to `dlsym'
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
(.text+0x37): undefined reference to `dlclose'
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
(.text+0x354): undefined reference to `dlsym'
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
(.text+0x3fb): undefined …Run Code Online (Sandbox Code Playgroud) 我是Prolog的新手.我graph.pl在下图中定义:

这是我的Prolog代码:
edge(a,e).
edge(e,d).
edge(d,c).
edge(c,b).
edge(b,a).
edge(d,a).
edge(e,c).
edge(f,b).
path(X,X).
path(X,Y):- edge(X,Z) ; path(Z,Y).
Run Code Online (Sandbox Code Playgroud)
我理解如下:只有在顶点X和顶点之间Y存在边缘且顶点X和顶点之间Z存在一条路径ZY(某种递归)时,顶点和顶点之间才有路径.
这对于呈现的图表是否正确?当我问Prolog关于顶点A和顶点之间的路径时,F它给了我true......这甚至都不对!这段代码可能有什么问题?
我想在我的echo客户端/服务器程序中验证客户端的服务器.我正在使用python 2.7.12和ssl模块
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Run Code Online (Sandbox Code Playgroud)
我使用openssl命令生成了客户端和服务器的证书和密钥:
openssl req -new -x509 -days 365 -nodes -out client.pem -keyout client.key
openssl req -new -x509 -days 365 -nodes -out server.pem -keyout server.key
Run Code Online (Sandbox Code Playgroud)
openssl库本身的版本和python使用的openssl是相同的:
openssl version -a
OpenSSL 1.0.1f 6 Jan 2014
built on: Fri Sep 23 12:19:57 UTC 2016
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat …Run Code Online (Sandbox Code Playgroud) 我在Python中实现了一个简单的网络"游戏" - 服务器绘制一个随机数,然后客户端试图猜测它.我的应用程序运行良好,当客户端猜出数字时,它与服务器断开连接(它在客户端处理).
但是,经过适当的猜测后,数字仍然相同.我想修改应用程序,这样当客户端猜出数字时,服务器应该输出一个新的数字,所以其他客户端应该猜测新的数字.我怎样才能做到这一点?
一些模板,只是为了引起注意的问题:
#!/usr/bin/env python
from random import randint
import socket, select
from time import gmtime, strftime
import threading
import sys
class Handler(threading.Thread):
def __init__(self, connection, randomnumber):
threading.Thread.__init__(self)
self.connection = connection
self.randomnumber = randomnumber
def run(self):
while True:
try:
data = self.connection.recv(1024)
if data:
print data
try:
num = int(data)
if Server.guess(num) :
msg = "You won! This is the right number!"
self.connection.send(msg)
break
else :
msg = "Try again!"
self.connection.send(msg)
except ValueError, e:
msg = "%s" % …Run Code Online (Sandbox Code Playgroud) 我想编写一个简单的TCP echo服务器应用程序.我设法做了回声部分,但在客户端和服务器之间发送文件时遇到了一些问题.这个想法很简单:尽管发送普通消息,客户端可以向服务器发送一个特殊命令(\ SENDFILE filename.txt),并且在收到这样的命令后,服务器应该向客户端询问该文件,并从客户端获取该文件.(此外,我想从一个客户端获取一个文件,然后将其发送到另一个客户端).
我认为这里的"协议"很简单,但是在客户端输入\ SENDFILE之后,客户端挂起,并且不会从服务器接收任何进一步的消息.此外(服务器和客户端位于不同的目录中)服务器端只有来自客户端的空文件,内部没有内容.
任何想法在这里可能是错的?
client.c
#include<stdio.h> //printf
#include<string.h> //
#include <sys/stat.h>
#include<sys/socket.h> //socket
#include<arpa/inet.h> //inet_addr
#include <fcntl.h>
#define SERVER_PORT 9034
#define BUFF_SIZE 2000
int sendall(int s, char *buf, int len)
{
int total = 0;
int bytesleft = len;
int n;
while(total < len)
{
n = send(s, buf+total, bytesleft, 0);
if (n == -1)
break;
total += n;
bytesleft -= n;
}
return n==-1?-1:0;
}
void SendMsgToSender(char *msg, int connfd)
{
write(connfd, msg, strlen(msg));
memset(msg, 0, …Run Code Online (Sandbox Code Playgroud)