void Form1::sendText()
{
QString s1;
s1=textEdit1->text();
//--------------------------------------------------------------------------------------
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
my_addr.sin_family=PF_INET;
my_addr.sin_port=htons(myport);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero), 0);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
perror("bind");
exit(1);
}
if (listen(sockfd, lisnum) == -1) {
perror("listen");
exit(1);
}
while(1) {
sin_size = sizeof(struct sockaddr_in);
new_fd=accept(sockfd,(struct sockaddr*)&their_addr,&sin_size);
if (new_fd==-1)
{
perror("accept");
continue;
}
printf("server: got connection from %s\n",inet_ntoa(their_addr.sin_addr));
if (!fork()) {
if (send(new_fd, s1, 14, 0) == -1) {
perror("send");
close(new_fd);
exit(0);
}
}
close(new_fd);
waitpid(-1,NULL,WNOHANG);
}
//--------------------------------------------------------------------------------------------
}
这段程序就是把textEdit1控件的内容发送出去,初学socket编程,出现的错误是:no matching function for call to "accept()",发送字符串的代码在在别的程序中测试通过了,调用accept()没有问题。(此处大概是把accept看成是qt的函数了,因为qt中的accpt函数和Linux下的accpt函数的参数不同,所以说调用出错吧,在Qt中编程时,要是用到Linux 系统的函数,除了要包含头文件外,还要怎样标志是调用的Linux的而不是qt的函数呢?)
请高手指教,不胜感激!