搭建1对1 C\S模型

chatroom.h头文件:

client_main.c:

#include "../include/chatroom.h"
//客户端
int main(int argc, char** argv)
{
 if(argc != 2)
  return 0;
 int socketfd;
 char buff[1000] = {0};
 struct sockaddr_in servaddr;
 socketfd = socket(AF_INET, SOCK_STREAM, 0);
 servaddr.sin_family = AF_INET;//iv4协议
 servaddr.sin_port = htons(8000);//8000端口
 inet_pton(AF_INET, argv[1], &servaddr.sin_addr);//指定IP地址
 if(connect(socketfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)//链接服务器
 {
  printf("connect error: %s(errno: %d)\n", strerror(errno),errno);
  return 0;
 }
 while(1)
 {
  printf("Enter:");
  fgets(buff,998,stdin);
  send(socketfd,buff,strlen(buff),0);
 }
}

server_main.c:

#include "../include/chatroom.h"
//服务器端
int main()
{
 int socket_fd, connect_fd;
 char buff[1000] = {0};
 struct sockaddr_in servaddr;
 socket_fd = socket(AF_INET, SOCK_STREAM, 0);//创建一个套接字
 servaddr.sin_family = AF_INET;
 servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
 servaddr.sin_port = htons(8000);
 if(bind(socket_fd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1)//给套接字绑定端口和协议
 {
  printf("bind error!\n");//如果出错,试试等会再运行
  return 0;
 }
 listen(socket_fd, 10);//监听套接字
 connect_fd = accept(socket_fd, NULL, NULL);//同意链接
 while(1)
 {
  if(recv(connect_fd, buff,999,0) == 0)//接受数据
   break;//如果链接断开则停止循环
  printf("get:%s",buff);//输出接收数据的内容
 }
 close(connect_fd);
 close(socket_fd);
 return 0;
}

分别编译客户端和服务器端的源码,最后结果显示如下:

查看服务器IP:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值