#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <pthread.h>
#define PORT 33333
void *recv_message(void * arg)
{
int cfd = *((int *)arg);
int ret;
char buffer[1024];
while(1)
{
memset(buffer,0,sizeof(buffer));
if((ret = recv(cfd,buffer,sizeof(buffer),0)) < 0)
{
perror("recv error!\n");
exit(1);
}
if(ret == 0)
{
printf("%d is close!\n",cfd);
pthread_exit(NULL);
}
printf("recv_message is %s\n",buffer);
usleep(3);
}
pthread_exit(NULL);
}
int main()
{
int sockfd;
char buffer[1024];
pthread_t id;
struct sockaddr_in s_addr;
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
perror("socket create error!\n");
exit(1);
}
printf("socket success!\n");
bzero(&s_addr,sizeof(struct sockaddr_in));
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(PORT);
s_addr.sin_addr.s_addr = inet_addr("192.168.1.17");
if(connect(sockfd,(struct sockaddr *)(&s_addr),sizeof(struct sockaddr_in)) < 0)
{
perror("connect error!\n");
exit(1);
}
printf("connect success!");
if(pthread_create(&id,NULL,recv_message,(void *)(&sockfd)) != 0)
{
perror("pthread create error!\n");
exit(1);
}
while(1)
{
memset(buffer,0,sizeof(buffer));
printf("please input send message:\n");
scanf("%s",buffer);
write(sockfd,buffer,sizeof(buffer));
usleep(3);
}
shutdown(sockfd,SHUT_RDWR);
printf("recv message is:%s\n",buffer);
return 0;
}