Socket C++程序在运行时成功编译崩溃
Socket C++ program successfully compiled crashes at runtime
我已经为此挣扎了几个小时,但我没能找出我做错了什么。这是一个非常简单的程序,应该在给定的端口上向给定的IP发送一个简单的UDP数据包。g++编译这个程序时没有任何错误或警告,但当我运行它时。。。!它只是死了。在stdout上,它会打印:0(这应该意味着绑定工作正常)和"尝试发送"。然后什么都没有。它根本没有打印"我在这里"。没有错误,没有消息,什么都没有。有人有什么暗示吗?这是代码:
#include <iostream>
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <netdb.h>
#include <ifaddrs.h>
using namespace std;
int main()
{
struct sockaddr_in local_addr;
local_addr.sin_family=AF_INET;
local_addr.sin_port=0;
local_addr.sin_addr.s_addr=htonl(INADDR_ANY);
memset(local_addr.sin_zero, ' ', sizeof(local_addr.sin_zero));
int local_socket;
local_socket = socket(PF_INET, SOCK_STREAM, 0);
cout<<bind(local_socket, (struct sockaddr *)&local_addr, sizeof(sockaddr_in)) <<endl;;
char remote_addr[]="95.110.232.188";
struct sockaddr_in remote_sockaddr;
remote_sockaddr.sin_family=AF_INET;
remote_sockaddr.sin_port=1180;
remote_sockaddr.sin_addr.s_addr=inet_addr(remote_addr);
memset(remote_sockaddr.sin_zero, ' ', sizeof(remote_sockaddr.sin_zero));
cout<<"TRYING TO SEND.."<<endl;
cout<<sendto(local_socket, "PTDMW", 5, 0, (struct sockaddr *) & remote_sockaddr, sizeof(sockaddr_in))<<endl;
cout<<"HERE I AM!!"<<endl;
}
SOCK_STREAM
用于TCP,而不是UDP。使用SOCK_DGRAM
。不要忘记更改端口号和其他主机特定值的网络字节顺序。除此之外,您的程序运行良好,不会崩溃(如果您将套接字更改为正确的类型)。
相关文章:
- VS2017 版本 15.8.3 成功编译内联方法,而不返回所需值
- 如何在 c++ 中导入文件?以及如何成功编译它们?
- 奇怪的语法构造 - 应用于 typedef 的运算符 () 使用 VS2015 成功编译
- "template"关键字限定符是否会导致代码成功编译,但不同?
- 使用不带前缀"std"且不带"using namespace std;"的 std::sort() 成功编译
- 在 C++11 和 C++11 之前成功编译但行为不同的代码示例
- 有没有人在Windows7机器上成功编译过木瓜
- CGAL:如何成功编译和链接CGAL示例(在Mac OS X 10.9 Mavericks上)
- 使用 qmake 成功编译 SSE 指令(但 SSE2 不被识别)
- Socket C++程序在运行时成功编译崩溃
- 在 clang 中显式指定的参数无效,但在 gcc 中成功编译 — 谁错了?
- 为什么这个模板函数能够成功编译
- 无法使用Xcode成功编译boost
- Eclipse可以成功编译,但仍然会出现语义错误
- 成功编译节点模块并"Module did not self-register."
- Eclipse 给出错误"无法解析函数'MessageBoxA'",但仍然成功编译?
- C++ 成功编译,不包含<string>标题
- CGAL4.6 中成功编译的代码的编译错误
- 捕获而不尝试成功编译
- 为什么以下代码在VS2010中成功编译