我是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编号.
感谢您的帮助!我很感激.
有没有一种有效的方法可以在不使用任何插值的情况下在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++服务器,我使用向量来单独跟踪所有这些客户端.但是,我意识到,由于运行了很多线程,因此两个线程可能同时读取和写入向量的可能性很小.是否有一种快速安全的方法可以向它们添加互斥锁或其他内容,以便它等待所有读取完成,直到另一个函数添加到它?不这样做可能会破坏协议,甚至可能导致服务器崩溃.
我有一个想法,创建一个全局变量,将所有读取锁定到一个向量,但我不确定是否可以告诉线程相互排除该变量(即不将bool更改为false并将其检查为true)同时,渲染机制毫无意义).
我使用的是Windows 7(Visual Studio 2010 Pro).感谢您的任何建议!
这很难说,但我需要能够将特定方法链接到对象.更具体地说,我正在制作面向图形的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.
谢谢你的帮助.
好吧,也许我正在做一些致命的傻事,但我很生气.整天我一直在处理向我们自己的类中存储指针的向量,但是它们(大部分时间)都搞乱了.有时当我遍历它们时,我最终得到另一个向量的变量,有时我从内存中得到一些完全无意义的东西.
这是一些代码:
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) 我需要在另一个类中使用一个类中定义的函数.我尝试将函数作为指针传递,而不是重写整个函数,如下所示:
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)
是否可以做这样的事情,如果是这样,我该如何解决?而且,如果可能的话,我可以使用来自对象实例而不是类的指针吗?也就是说,可能使用在特定类实例中定义的变量.谢谢.
我有一个单元格删除句柄功能,提醒确认对话框,如果用户按"好",它将继续并删除单元格.否则,我希望它以编程方式隐藏删除按钮.我设置了以下函数来处理在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)