1.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
//1 创建有名管道文件
//2 获取管道文件标示
//3 ......
//4 接收数据
//1 创建线程tid,自己定义pthread_t tid
//2 创建线程,pthread_create(线程id,线程属性,线程例程,例程参数),注意是create
//3 在线程例程中退出线程pthread_exit(退出值),退出值是万能指针
//注意编译时加上 -lpthread
void *pthread(void *arg) //线程例程,必须是一个指针函数,并且参数为万能指针
{
int ret = bind(sock_fd, (struct sockaddr *)&serve, sizeof(serve));
if ( ret == -1)//判断绑定函数是否成功
{
perror("bind failed");
}
//3.发起连接(connect)
connect(sock_fd,(struct sockaddr *)&serve,sizeof(serve));
char *buf = malloc(100);
while(1)
{
memset(buf,0,sizeof(buf));
fgets(buf,sizeof(buf),stdin);//标准输入
//4.发送消息(send)
send(sock_fd,buf,100,0);
if(strcmp(buf,"gun\n")==0)
{
break;
}
}
close(sock_fd);
close(acc_fd);
int main()
{
pthread_t tid;
pthread_create(&tid,NULL,pthread,NULL);
//***************************************************************************
int ret = bind(sock_fd, (struct sockaddr *)&serve, sizeof(serve));
if ( ret == -1)//判断绑定函数是否成功
{
perror("bind failed");
}
//监听
int listen_ret = listen(sock_fd, 4);//可以设置监听的套接字的最大个数
printf("等待连接....\n");
int acc_fd = accept(sock_fd, NULL, NULL);//阻塞等待
printf("连接成功!!!\n");
char *buf = malloc(100);
while(1)
{
memset(buf,0,sizeof(buf));
printf("客户端:%s\n",buf);
recv(fd,buf,sizeof(buf));
if ( strcmp(buf,"gun\n")==0 )//判断时记得加上'\n'
{
printf("ok,gun\n");
close(sock_fd);
break;
}
}
close(sock_fd);
close(acc_fd);
}
2.
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
//1 创建有名管道文件
//2 获取管道文件标示
//3 ......
//4 接收数据
//1 创建线程tid,自己定义pthread_t tid
//2 创建线程,pthread_create(线程id,线程属性,线程例程,例程参数),注意是create
//3 在线程例程中退出线程pthread_exit(退出值),退出值是万能指针
//注意编译时加上 -lpthread
void *pthread(void *arg) //线程例程,必须是一个指针函数,并且参数为万能指针
{
int ret = bind(sock_fd, (struct sockaddr *)&serve, sizeof(serve));
if ( ret == -1)//判断绑定函数是否成功
{
perror("bind failed");
}
//3.发起连接(connect)
connect(sock_fd,(struct sockaddr *)&serve,sizeof(serve));
char *buf = malloc(100);
while(1)
{
memset(buf,0,sizeof(buf));
fgets(buf,sizeof(buf),stdin);//标准输入
//4.发送消息(send)
send(sock_fd,buf,100,0);
if(strcmp(buf,"gun\n")==0)
{
break;
}
}
close(sock_fd);
int main()
{
pthread_t tid;
pthread_create(&tid,NULL,pthread,NULL);
//***************************************************************************
int ret = bind(sock_fd, (struct sockaddr *)&serve, sizeof(serve));
if ( ret == -1)//判断绑定函数是否成功
{
perror("bind failed");
}
//3.发起连接(connect)
connect(sock_fd,(struct sockaddr *)&serve,sizeof(serve));
char *buf = malloc(100);
while(1)
{
memset(buf,0,sizeof(buf));
send(fd,buf,sizeof(buf));
if ( strcmp(buf,"gun\n")==0 )//判断时记得加上'\n'
{
break;
}
}
close(sock_fd);