- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 udp 套接字客户端中调用 sendto,如下所示:
if((num_w = sendto(cli_udp_sock, buffer, strlen(buffer), 0, (struct sockaddr *) &servaddr, sizeof(servaddr) )) < 0)
但服务器端似乎没有收到任何内容,并且以非常奇怪的方式,num_w 在打印出来时给出如下值:
-197379208-14400769362054978424
perror() 显示“成功”
到目前为止的客户端代码:
#include <sys/socket.h> /* socket definitions */
#include <sys/types.h> /* socket types */
#include <arpa/inet.h> /* inet (3) funtions */
#include <unistd.h> /* misc. UNIX functions */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <netdb.h>
/* Global constants */
#define MAX_LINE (1000)
#define LISTENQ (10)
/* Function declarations */
int ParseCmdLine(int argc, char *argv[], char **szPort, char **szAddress, char ** serv_udp_port);
/* main() */
int main(int argc, char *argv[]) {
//
short int cli_port; /* port number */
short int serv_port;
struct sockaddr_in servaddr; /* socket address structure */
socklen_t serv_addrlen = sizeof(servaddr);
struct sockaddr_in cliaddr;
char buffer[MAX_LINE]; /* character buffer */
char *szAddress; /* Holds remote IP address */
char *szPort; /* Holds remote port */
char *serv_udp_port;
char *endptr; /* for strtol() */
int cli_udp_sock;
/* Get command line arguments */
ParseCmdLine(argc, argv, &szPort, &szAddress, &serv_udp_port);
/* Set the remote port */
cli_port = strtol(szPort, &endptr, 0);
serv_port = strtol(serv_udp_port, &endptr, 0);
if ( *endptr )
{
printf("ECHOCLNT: Invalid port supplied.\n");
exit(EXIT_FAILURE);
}
/* Set all bytes in socket address structure to zero, and fill in the relevant data members */
memset(&cliaddr, 0, sizeof(cliaddr));
cliaddr.sin_family = AF_INET;
cliaddr.sin_port = htons(cli_port);
cliaddr.sin_addr.s_addr = htonl(INADDR_ANY);
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(serv_port);
/* Set the remote IP address */
if ( inet_aton(argv[2], &servaddr.sin_addr) <= 0 )
{
printf("ECHOCLNT: Invalid remote IP address.\n");
exit(EXIT_FAILURE);
}
int list_s;
if ( (list_s = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
{
fprintf(stderr, "ECHOCLNT: Error creating listening socket.\n");
exit(EXIT_FAILURE);
}
if (listen(list_s, LISTENQ) < 0)
{
printf("Failed to called listen.\n");
}
if( ((cli_udp_sock = socket(AF_INET, SOCK_DGRAM, 0) )< 0))
{
printf("UDP socket was not successfully created. Exiting...\n");
exit(0);
}
//if(bind(cli_udp_sock, (struct sockaddr *) &cliaddr, sizeof(cliaddr)) > 0);
char command[100];
/* Get command from user */
printf("==============================================\n");
do
{
if(strcmp(command, "s\n") == 0)
{
printf("______________________________________________\n");
printf("'s' entered, \nEnter the string to request\n"); //prompt for string to enter
strcpy(buffer, "CAP\n"); //set first set of characteres to CAP\n
char bucket[100]; //space for entered string
fgets(bucket, sizeof bucket, stdin);
printf("The string entered is: %s", bucket);
strcat(buffer, bucket);
/* Send string to echo server, and retrieve response */
int num_w;
if((num_w = sendto(cli_udp_sock, buffer, strlen(buffer), 0, (struct sockaddr *) &servaddr, sizeof(servaddr) )) < 0)
{
perror("error: ");
printf("Problem writing data to server, errno: %d", errno);
exit(0);
}
else
{
perror("error 2: ");
printf("num_w: %d\n");
}
提前非常感谢!(哦,我使用的是 Kali linux、虚拟机、Windows 10)
最佳答案
您没有打印num_w
。您已将其排除在 printf()
语句之外。您只是打印堆栈上的任何随机垃圾。
And
perror()
displays "success"
所以 num_w
是正数。在这种情况下调用 perror()
是没有意义的。
关于c - Sendto 返回随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082150/
我在 udp 套接字客户端中调用 sendto,如下所示: if((num_w = sendto(cli_udp_sock, buffer, strlen(buffer), 0, (struct so
在 C 中使用 sendto() 时,我遇到了一个奇怪的问题。我有以下代码: struct sockaddr_in currSocket; int currSocketLength = sizeof(
我目前正在尝试在两台计算机之间设置 UDP 协议(protocol)。第一个是 Windows 驱动的计算机,第二个是带有 Raspbian 操作系统的 Raspberry Pi。 问题是我能够将信息
我正在为一个大学项目创建一个并发 UDP 套接字。客户端等待 stdin 命令,然后使用函数 child_job 创建一个新进程和一个新套接字。服务器接收来自客户端的命令,创建一个新进程来初始化新套接
我正在尝试在没有 tcp 有效负载的情况下进行客户端-服务器通信。我只是使用 tcp 的 header 作为有效负载字段,默认情况下为 20 字节。我刚刚意识到传输大文件时 CPU 使用率非常高,我尝
我尝试使用以下代码通过 UDP 发送,但得到了奇怪的结果。 if((sendto(newSocket, sendBuf, totalLength, 0, (SOCKADDR *)&sendAd
我有两个相互通信的程序。 客户端:先发送消息,然后监听回复。服务器:监听回复然后发送消息。 我能够完美地从客户端发送消息并在服务器中监听。但是当我尝试从服务器发送消息时出现问题。 struct hos
我目前正在处理一项网络作业。我们希望客户端自动获得分配给 TCP 套接字的 IP 和端口,并将 UDP 套接字绑定(bind)到与 TCP 套接字相同的地址和端口。这样,UDP 和 TCP 共享相同的
我有服务器和客户端通过 Windows 套接字发送/接收字符串。 客户端代码(发件人): string c = "Haha"; sprintf(temp.Buffer, c.c_str()); tem
您好,我有以下代码: if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) sin_family = AF_INET; sin->sin_port = htons(
我是 python(3.3) 网络编程的新手,所以一开始我尝试编写一个基本的跟踪路由程序。其中一行代码是: send_socket.sendto(512, '', (dest_name, port))
在我最近的项目中,我需要使用UDP协议(protocol)来传输数据。如果我使用 size = s.sendto(data, (, )) 发送数据,UDP协议(protocol)会保证数据打包成一个U
我有 2 个程序在运行(程序 1、程序 2),它们都使用我初始化的套接字相互发送和接收 UDP 数据包。 我的问题是,如果我从 program1 的 TRANSMIT(TX) 套接字发送广播,prog
ioctl(socketFd_, SIOCOUTQ, &outstandingBytes); getsockopt(socketFd_, SOL_SOCKET, SO_SNDBUF, &sendBu
我正在编写一个通过套接字(从客户端到服务器)发送数据的应用程序。我观察到非常奇怪的行为:当我杀死服务器时,先发送然后杀死就像服务器存在一样。下一个返回 EPIPE。你能解释一下为什么吗? 这是来自客户
我有一个程序,它通过 UDP 接受坐标,移动一些设备,然后在工作完成时进行回复。 我似乎和这个人有同样的问题: Python sendto doesn't seem to send 我的代码在这里:
ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *des
我如何以编程方式 (.net) 调用 Windows 资源管理器 SendTo 上下文菜单选项上的命令? 最佳答案 sendto 项是文件系统对象这一事实是一个实现细节,菜单由 sendto shel
我是 Python 的新手,正在尝试使用套接字将字节数组作为原始数据包发送。我的 IP 是 192.168.0.116,我要发送到的设备是 192.168.0.64。这个客户端设备是一个基于微 Con
在SendTo文件夹里加上一文件夹的快捷方式后,在右键发送到这个文件夹的是这些文件的一个副本,实际上是一个复制的过程,有时候我们只希望是快捷方式,那就得另想办法了。 把如下代码内容保存为sho
我是一名优秀的程序员,十分优秀!