我是套接字的新手,我不知道是否有可能做我正在尝试的事情。首先,我在谷歌和stackoverflow中寻找更多信息,但我没有找到任何东西:(
现在我解释一下我的问题。我在main函数中创建了客户端套接字(带有socket y连接的函数),没有任何问题。但后来我调用了一个名为sendframe()的函数,我创建了一些函数,然后我使用write函数在socket中放入一条消息。这里的问题是我不知道为什么write函数会给出错误(返回-1)。我认为问题是我没有正确传递套接字文件描述符,但我不确定(我不相信只使用文件描述符允许我在套接字中写入...)
以下是我要做的事情的片段:
#include ...
void sendframe(int sockfd);
void main(void) {
//// Open the socket
int sockfd;
struct sockaddr_in serv_addr;
struct hostent *server;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("open socket erorr\n");
server = gethostbyname("192.168.20.155");
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = 1414;
serv_addr.sin_addr = *((struct in_addr *) server->h_addr);
bzero(&(serv_addr.sin_zero),8);
if(connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr))==-1)
error("connect error\n");
exit(-1);
// ..... More code.....
// Send frame
sendframe(&sockfd);
}
void sendframe(int sockfd)
{
// Some stuff...
char *frame
int num = write(sockfd,frame,strlen(frame));
}
可能答案很简单,但我是新手。任何线索?
答案 0 :(得分:0)
sendframe(&sockfd);
应为sendframe(sockfd);
,因为sendframe
需要一个int,而不是int *
。