小编Sef*_*efu的帖子

如何查找套接字的本地端口号?(Windows C++)

我是Windows网络的新手,我试图找出我的套接字绑定到哪个PORT编号(C++,Windows 7,Visual Studio 2010 Professional).它是一个UDP套接字,根据我的理解,使用以下初始设置应将其绑定到随机可用端口/地址:

sockaddr_in local;
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = 0; //randomly selected port
int result = bind(clientSock, (sockaddr*)&local, sizeof(local));
//result is always 0
Run Code Online (Sandbox Code Playgroud)

就使用此方法而言,它适用于发送数据或将其绑定到特定端口(用所需的端口号替换0).我需要的是随机绑定它,然后找出它之后绑定的端口.有什么方法可以做到这一点吗?似乎"local"结构包含"0.0.0.0"作为IP地址,"0"作为PORT编号.

感谢您的帮助!我很感激.

c++ sockets windows port binding

4
推荐指数
1
解决办法
3万
查看次数

如何在OpenCV中调整大小而无需插值(零填充)?

有没有一种有效的方法可以在不使用任何插值的情况下在OpenCV中调整图像大小?而不是常规的“调整大小”,我希望图像将像素重新映射为更大的图像,但将其他所有内容都填充为0。

例如,将img1扩展到低于img2的2倍:

img1 = [ 1, 2, 3,
         4, 5, 6,
         7, 8, 9 ]

cv::resize(img1, img2, cv::Size(6, 6));

img2 = [ 1, 0, 2, 0, 3, 0,
         0, 0, 0, 0, 0, 0,
         4, 0, 5, 0, 6, 0,
         0, 0, 0, 0, 0, 0,
         7, 0, 8, 0, 9, 0,
         0, 0, 0, 0, 0, 0 ]
Run Code Online (Sandbox Code Playgroud)

我知道明显的方法是只使用for循环,但是我想知道是否有使用OpenCV调用的更有效的方法?

c++ opencv image-resizing

4
推荐指数
1
解决办法
2775
查看次数

如何使用互斥锁保护矢量?

我正在设计一个接受多个不同交互客户端的C++服务器,我使用向量来单独跟踪所有这些客户端.但是,我意识到,由于运行了很多线程,因此两个线程可能同时读取和写入向量的可能性很小.是否有一种快速安全的方法可以向它们添加互斥锁或其他内容,以便它等待所有读取完成,直到另一个函数添加到它?不这样做可能会破坏协议,甚至可能导致服务器崩溃.

我有一个想法,创建一个全局变量,将所有读取锁定到一个向量,但我不确定是否可以告诉线程相互排除该变量(即不将bool更改为false并将其检查为true)同时,渲染机制毫无意义).

我使用的是Windows 7(Visual Studio 2010 Pro).感谢您的任何建议!

c++ windows multithreading mutex vector

3
推荐指数
1
解决办法
3010
查看次数

有没有办法在Java中传递方法引用?

这很难说,但我需要能够将特定方法链接到对象.更具体地说,我正在制作面向图形的GUI,我希望能够将任意方法指定为元素的默认"动作"功能,例如按钮.

也就是说,我创建了这些基本上具有绘制自己能力的界面"图形"对象.我希望他们能够处理自己的行为,所以我可以做一些像这样的事情:

GraphicObject b1 = new Button();
GraphicObject b2 = new Button();
b1.assignDefaultAction(---some method reference here--);
b2.assignDefaultAction(---a different method reference here--);
Run Code Online (Sandbox Code Playgroud)

然后,如果我做了类似的事情:

b1.action();
b2.action();
Run Code Online (Sandbox Code Playgroud)

每个元素将独立调用自己的引用方法.我相信这可以用C++做,但我还没有在Java中看到它.它甚至可能,还是有某种解决方法?我试图避免的事情是必须为我需要做的每一件小事创建特定的抽象,或者丢弃我的包含一百个看起来凌乱的规格的JPanel.

谢谢你的帮助.

java parameters methods reference function

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

C++(Windows)为什么向量会导致内存错误?

好吧,也许我正在做一些致命的傻事,但我很生气.整天我一直在处理向我们自己的类中存储指针的向量,但是它们(大部分时间)都搞乱了.有时当我遍历它们时,我最终得到另一个向量的变量,有时我从内存中得到一些完全无意义的东西.

这是一些代码:

vector<TCPClientProtocol*> clients;
vector<TCPClientProtocol*> robots;

//this function gets names from "robots" and sends them to all the "clients"
void sendRobotListToClients(){
    //collect the list:
    int numRobots = robots.size();
    char *list = (char*)malloc(numRobots * USERNAME_SIZE);
    for(int i=0; i<numRobots; i++){
        int namelen = strlen(robots[i]->name);
        memcpy(&list[i*USERNAME_SIZE], robots[i]->name,
            namelen);
        if(namelen < USERNAME_SIZE)
            list[i*USERNAME_SIZE + namelen] = (char)0;
    }

    //send it to all clients:
    int numClients = clients.size();
    for(int i=0; i<numClients; i++){
        int result = clients[i]->sendRobotList(list, numRobots);
        if(result < 0){
            cout<<"Failed sending refreshed list to …
Run Code Online (Sandbox Code Playgroud)

c++ memory windows vector

0
推荐指数
1
解决办法
285
查看次数

如何在另一个类或结构中使用类函数指针?

我需要在另一个类中使用一个类中定义的函数.我尝试将函数作为指针传递,而不是重写整个函数,如下所示:

class C {
  public:
    int get(int x) { return x*x; }
};

struct S {
    int (*func) (int x);
};

int main() {
    C c;
    S s;

    cout << c.get(3) << endl;

    s.func = &C::get;
    cout << s.func(3) << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,并给出以下错误:

func_ptr.cpp: In function ‘int main()’:
func_ptr.cpp:42:18: error: cannot convert ‘int (C::*)(int)’ to ‘int (*)(int)’ in assignment
Run Code Online (Sandbox Code Playgroud)

是否可以做这样的事情,如果是这样,我该如何解决?而且,如果可能的话,我可以使用来自对象实例而不是类的指针吗?也就是说,可能使用在特定类实例中定义的变量.谢谢.

c++ pointers function-pointers function

0
推荐指数
1
解决办法
697
查看次数

iOS:如何在确认对话框后为UITableCell"删除"菜单中的隐藏设置动画?

我有一个单元格删除句柄功能,提醒确认对话框,如果用户按"好",它将继续并删除单元格.否则,我希望它以编程方式隐藏删除按钮.我设置了以下函数来处理在UITableViewDelegate中删除UITableView单元格:

// delete a cell
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if(editingStyle == .Delete) {
        var deleteAlert = UIAlertController(
            title: "Delete?",
            message: "All data will be permanently deleted.",
            preferredStyle: UIAlertControllerStyle.Alert)
        deleteAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: {
            (action: UIAlertAction!) in
            // delete logic here:
            self.deleteDataForCell(indexPath.row)
            self.myTable.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
            println("Delete successful")
        }))
        deleteAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: {
            (action: UIAlertAction!) in
            println("Delete cancelled")
            // TODO - now hide the delete button with animation
        }))
        presentViewController(deleteAlert, animated: true, completion: …
Run Code Online (Sandbox Code Playgroud)

xcode uitableview ios swift

0
推荐指数
1
解决办法
1141
查看次数