- 论坛徽章:
- 0
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>
void myThread1(int socket_cmd)
{
char TmpBuffer[1024];
int n;
while(1)
{
memset(TmpBuffer, 0, 1024);
// if(read(socket_cmd, TmpBuffer, 1 > 0)
if((n = (recv(socket_cmd, TmpBuffer, sizeof(TmpBuffer), 0))) > 0)
{
printf("receive file\n" ;
}
}
}
int main()
{
int socket_cmd;
int ret=0;
pthread_t id1;
int new_fd;
socklen_t sin_size;
int portcmd = 5555;
struct sockaddr_in server_cmd, client_cmd;
new_fd = socket(AF_INET, SOCK_STREAM, 0);
char cmd[]="helloword\n";
if(new_fd == -1)
{
printf("Create socket_cmd error\n" ;
return 1;
}
bzero(&server_cmd, sizeof(server_cmd));
server_cmd.sin_family = AF_INET;
server_cmd.sin_addr.s_addr = htonl(INADDR_ANY);
server_cmd.sin_port = htons(portcmd);
if(bind(new_fd,(struct sockaddr *)&server_cmd,sizeof(struct sockaddr))==-1)
{
perror("bind" ;
return 1;
}
if(listen(new_fd,10)== -1)
{
perror("listen" ;
return 1;
}
sin_size = sizeof(struct sockaddr_in);
if((socket_cmd = accept(new_fd, (struct sockaddr *)&client_cmd, &sin_size))==-1)
{
perror("accept" ;
exit(1);
}
if(fcntl(socket_cmd, F_SETFL, O_NONBLOCK) == -1)
{
perror("fcntl" ;
exit(1);
}
ret = pthread_create(&id1, NULL, (void*)myThread1, (void*)socket_cmd);
if (ret)
{
printf("Create pthread1 error!\n" ;
return 1;
}
#if 1
while(1)
{
send(socket_cmd, cmd, strlen(cmd) + 1, 0);
sleep(2);
}
#endif
pthread_join(id1, NULL);
return 0;
}
用wsnet客户端与之相连,本程序发送可以,但是不能从wsnet客户接收数据,哪里出的问题
[ 本帖最后由 yass2an 于 2009-3-13 17:19 编辑 ] |
|