UNIX网络编程之简易客户端与服务端

UNIX网络编程TCP客户端步骤(在linux环境下)

1. 必需包含的头文件
#include<sys/types.h>
#include<sys/un.h>
#include<netinet/in.h>

//如果要用到linux下面的socket函数,包含
#include<sys/socket.h>

//要用到bzero包含
#include<strings.h>

//要用到输入输入,包含
#include<stdio.h>

2. 注意区分struct sockaddr结构与struct sockaddr_in结构
struct sockaddr为通用,但以上两者在定义时做了补齐处理,
两者可以互相转换

3. 创建本地套接字
int sockfd;
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd <0)
{
   //创建本地套接字出错
}

4. 连接服务端
struct sockaddr_in servaddr;
bzero(servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(2501); //转换本地字节序为网络字节序,端口为2501
if(inet_pton(AF_INET,"192.168.1.100",&servaddr.sin_addr) <= 0)
{
  //转换地址出错
}

#define BUFF_SIZE 256
typedef struct sockaddr SA;
char buff[BUFF_SIZE+1];

//因connect参数为struct sockaddr结构,要将struct sockaddr_in转化为struct sockaddr结构,
//不然有警告错误
if(connect(sockfd,(SA*)&sockaddr,sizeof(sockaddr))) < 0) 
{
  //连接服务端失败
}

5. 阻塞式读取数据(暂不考虑超时处理)
int n = 0; 
while((n = read(sockfd,buff,BUFF_SIZE) > 0)
{
   buff[BUFF_SIZE] = 0;
   
   //处理自己的业务 

}


UNIX网络编程TCP服务端步骤(在linux环境下)


1、2两点同客户端编程


3. 创建监听套接字
int listenfd;
listenfd = socket(AF_INET,SOCK_STREAM,0);
if(listenfd <0)
{
   //创建监听套接字出错
}


4. 绑定本地监听端口
struct sockaddr_in servaddr;
bzero(servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(2501); //转换本地字节序为网络字节序,监听端口为2501
servaddr.sin_addr.s_addr = htonl(INADDR_ANY); //监听本机所有网卡进来的连接
bind(listenfd,(SA*)&servaddr,sizeof(servaddr));

5. 开始监听
listen(listenfd,5); //连接队列缓存5个连接


6. 接收到来的连接(此处考虑同步接收)
int connfd;
for( ; ; )
{
   connfd = accept(listenfd,NULL,NULL);


   //可以另外开启线程,或采取异步的方法,在connfd上收发数据了
}













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值