搭建1对1 C\S模型

来源:互联网 发布:mac上浏览图片的软件 编辑:程序博客网 时间:2024/06/07 02:39

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:


原创粉丝点击