- 论坛徽章:
- 0
|
本帖最后由 crazyhadoop 于 2013-10-27 22:48 编辑
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<string.h>
#include<pthread.h>
#include<unistd.h>
void *pid_write(void *sockfd);
void *pid_read(void *sockfd);
int main()
{
int sockfd=-1;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
printf("socket create failed~\n");
exit(1);
}
printf("sockfd=%d\n",sockfd);
struct sockaddr_in addr;
memset(&addr,0,sizeof(struct sockaddr));
addr.sin_family=AF_INET;
addr.sin_port=htons(8089);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
int ret=-1;
connect(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr));
if(ret<0)
{
printf("connect failed!\n");
exit(2);
}
pthread_t pid_w;
ret=pthread_create(&pid_w,0,pid_write,(void *)sockfd);
pthread_t pid_r;
ret=pthread_create(&pid_r,0,pid_read,(void *)sockfd);
pthread_join(pid_w,NULL);
pthread_join(pid_r,NULL);
return 0;
}
void *pid_write(void *sockfd)
{
char buf[128]={0};
int ret=-1;
while(1)
{
memset(buf,0,sizeof(buf));
fgets(buf,sizeof(buf),stdin);
buf[sizeof(buf)-1]='\0';
ret=write((int)sockfd,buf,sizeof(buf));
if(strcmp(buf,"exit"))
{
printf("write exit sucess~\n");
break;
}
}
}
void *pid_read(void *sockfd)
{
char buf[128]={0};
int ret=-1;
while(1)
{
memset(buf,0,sizeof(buf));
read((int)sockfd,buf,sizeof(buf));
printf("输入字符为%s\n",buf);
if(strcmp(buf,"exit"))
{
printf("read exit success!\n");
break;
}
}
}
运行结果,connect failed!
不知道什么原因。
|
|