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: