在Linux手册页中进行搜索时,我发现有关套接字中send和recv格式的内容如下:
对于发送,
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
Run Code Online (Sandbox Code Playgroud)
对于revv,
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
Run Code Online (Sandbox Code Playgroud)
但是我不确定他们想说些什么int flags。在一个示例代码中,我发现flag的值为0(零)。这是什么意思?手册页下面的那一行的含义是什么?
"The flags argument is the bitwise OR of zero or more of the following flags."
Run Code Online (Sandbox Code Playgroud)
然后是标志列表:
MSG_CONFIRM
MSG_DONTROUTE
.
.
.
etc.
Run Code Online (Sandbox Code Playgroud) 我不明白我在这里提供的代码中提到的两行.为什么我需要使用int*?我如何访问私有变量?我不确定我用这两行做什么.请详细解释.
问题线:
int *p = (int *) &s;
*p=10;
Run Code Online (Sandbox Code Playgroud)
主要代码:
#include <iostream>
using namespace std;
class sample {
private:
int a;
public:
void function () {
a=5;
}
void printA () {
cout<<"value is "<<a<<endl;
}
};
int main () {
sample s;
s.function();
s.printA();
int *p = (int *) &s;
*p=10;
s.printA();
}
Run Code Online (Sandbox Code Playgroud) 我的套接字服务器程序如下所述.它适用于单个客户端,但当我尝试同时将其与另一个客户端连接时,我无法连接.但是我已经在我的程序中将MAX_CLIENTS定义为2,但仍然是为什么我无法连接多个客户端?连接多个客户端的正确流程是什么?我可以通过修改此代码来连接多个客户端吗?任何可能的修复?
套接字服务器代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <error.h>
#include <strings.h>
#include <unistd.h>
#include <arpa/inet.h>
#define ERROR -1
#define MAX_CLIENTS 2
#define MAX_DATA 1024
main (int argc, char **argv){
struct sockaddr_in server;
struct sockaddr_in client;
int sock;
int new;
int sockaddr_len = sizeof (struct sockaddr_in);
int data_len;
char data [MAX_DATA];
if ((sock = socket (AF_INET, SOCK_STREAM, 0)) == -1)
{
perror ("socket: ");
exit (-1);
}
printf("after socket");
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[2]));
server.sin_addr.s_addr …Run Code Online (Sandbox Code Playgroud)