LINUX客户端client(socket、connect)实现客户端发送,服务器接收
#include<stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include<stdlib.h>
#include <strings.h>
#include<unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#define SERV_PORT 5001
#define SERV_IP_ADDR "192.168.157.34"
#define BUFSIZE 1024
#define QUIT_STR "QUIT"
int main()
{
int fd = -1;//首先将文件描述符设置为-1,-1为socket()出错时返回的值
fd = socket(AF_INET,SOCK_STREAM,0);
if(fd<0)//如果socket返回值出错,则报错,异常退出
{
perror("socket");
exit(1);
}
struct sockaddr_in sin;//定义一个socketaddr结构体 sin
bzero(&sin,sizeof(sin));//将结构体所有内容设置为0
sin.sin_family = AF_INET;//定义结构体的sin_family为ipv4类型AF_INET
sin.sin_port = htons(SERV_PORT);//定义端口号,并由主机字节序转换为网络字节序
sin.sin_addr.s_addr = inet_addr(SERV_IP_ADDR);//定义Ip地址,转为网络字节序的ip地址
if(connect(fd,(struct sockaddr*)&sin,sizeof(sin))<0)//连接,用法类似服务器的绑定函数bind,如果connect出错,返回-1,报错,异常退出,用于连接服务器
{
perror("connect");
exit(1);
}
char buf[BUFSIZE];//定义一个字符串类型的buf,大小为宏定义SIZEBUF大小
while(1)//一直循环
{
bzero(buf,sizeof(buf));//将buf内容全部置0
if(fgets(buf,BUFSIZE-1,stdin)==NULL)//从stdin标准输入获取BUFSIZE-1长度放到buf里面,如果stdin为NULL没有输入,就一直跳到while(1),继续执行while里面的内容,直到stdin有输入
{
continue;
}
write(fd,buf,strlen(buf));、//将获取到的buf内容写到文件描述符fd中
if(!strncasecmp(buf,QUIT_STR,strlen(QUIT_STR)))//比较Buf中的内容和宏定义QUIT_STR的内容QUIT,如果相同,返回0,取反为1,则终止while循环
{
break;
}
}
return 0;
}
打开两个终端,先运行服务器
在运行客户端
然后在客户端发送数据,服务器接收数据
原文地址:https://blog.csdn.net/weixin_43399456/article/details/140592380
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!