小编yak*_*yak的帖子

如何在Windows上使用GNU Make?

我安装MinGW和MSYS,补充C:\MinGW\bin到PATH,但我仍然无法在Windows上运行的Makefile cmd.我想运行cmd.exe并在那里键入,例如,make all但我的cmd说没有这样的命令.

我该怎么办?我不想使用MSYS shell,这不是重点.任何想法如何在Windows cmd中使用GNU Make,因为我可以在Ubuntu中使用它?我对此不感兴趣Cygwin.

windows cmd makefile gnu-make

95
推荐指数
3
解决办法
16万
查看次数

如何在Linux/Windows上测量CPU时间和挂钟时间?

我的意思是:我如何测量我的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)

另一个重要问题是:这种类型的时间测量架构是否独立?

c c++ cpu performance time

46
推荐指数
3
解决办法
7万
查看次数

带有套接字的TCP客户端/服务器,向客户端发送文件的服务器,客户端挂起,Python

我想在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)

python sockets tcp file

17
推荐指数
3
解决办法
2275
查看次数

在Python中通过套接字发送大量数据的正确方法是什么?

最近我写了一些代码(客户端和服务器)来发送图像 - 客户端只需将图像上传到服务器,只需使用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)

python sockets image

17
推荐指数
2
解决办法
1万
查看次数

简单的ECHO客户端/服务器[Python/sockets/ssl模块]中的相互ssl身份验证,ssl.SSLEOFError:EOF发生违反协议

我想在我的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)

python authentication ssl pyopenssl

13
推荐指数
1
解决办法
6304
查看次数

如何在C/C++中使用OpenSSL进行静态链接

我用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)

c c++ linker static static-linking

12
推荐指数
2
解决办法
2万
查看次数

在Prolog中定义图形:边缘和路径,查找两个顶点之间是否存在路径

我是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......这甚至都不对!这段代码可能有什么问题?

graph prolog transitive-closure

12
推荐指数
3
解决办法
2万
查看次数

Python/sockets/ssl EOF违反协议

我想在我的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 sockets ssl

12
推荐指数
1
解决办法
1493
查看次数

从客户端的线程修改服务器的变量(线程,python)

我在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)

python multithreading

10
推荐指数
1
解决办法
406
查看次数

C TCP套接字,带文件发送的echo服务器,在发送文件后挂起

我想编写一个简单的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)

c sockets tcp file server

9
推荐指数
1
解决办法
598
查看次数