基于TCP协议的C/S端程序的基本流程

服务端通讯流程

服务端:
	1、通过socket()函数创建用于接收连接请求的socket
	2、构造主机连接地址的sockaddr_in结构体,包括sin_family,sin_port,sin_addr三个成员
	3、绑定sockaddr_in结构体和socket
	4、通过listen()函数将stocket设置为监听模式
	5、调用accept()函数等待接收客户端的连接请求,并返回用于传递信息的stocket
	6、和客户端进行通信
	7、调用close()关闭socket

TCP服务端基本通讯示例

// 简单的TCP回送服务 服务端示例
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
 
int main(int argc,char *argv[])
{
   
  if (argc!=2)
  {
   
    printf("Using:./server port\nExample:./server 5005\n\n"); return -1;
  }
 
  // 第1步:通过socket()函数创建用于接收连接请求的socket
  int listenfd;
  if ( (listenfd = socket(AF_INET,SOCK_STREAM,0))==-1) {
    perror("socket"); return -1; }
 
  // 第2步:构造主机连接地址的sockaddr_in结构体,包括sin_family,sin_port,sin_addr三个成员
  struct sockaddr_in servaddr;    // 服务端地址信息的数据结构。
  memset(&servaddr,0,sizeof(servaddr));
  servaddr.sin_family = AF_INET;  // 协议族,在socket编程中只能是AF_INET。
  servaddr.sin_addr.s_addr = htonl(INADDR_ANY);          // 任意ip地址。
  //servaddr.sin_addr.s_addr = inet_addr("111.111.111.111"); // 指定ip地址。
  servaddr.sin_port = htons(atoi(argv[1]));  // 指定通信端口。
	
	// 第3步: 绑定sockaddr_in结构体和socket
  if (bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)) != 0 )
  {
    perror("bind"); close(listenfd); return -1; }
 
  // 第4步:通过listen()函数将stocket设置为监听模式
  if (listen(listenfd,5) != 0 ) {
    perror("listen"); close(listenfd)<
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值