主要学习socket编程。
实现client跟server随意聊天(TCP协议)。只允许一个server跟一个client 聊天,不能群聊
利用多线程实现,聊天双方各创建两个线程:实现发送和接受消息。
(代码都有详细注释)。
client(sock.c):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pthread.h>
void *recvsocket(void *arg)//接收server端socket数据的线程
{
int st = *(int *)arg;
char s[1024];
while(1)
{
memset(s, 0, sizeof(s));
int rc = recv(st, s, sizeof(s), 0);
if (rc <= 0)//如果recv返回小于等于0,代表socket已经关闭或者出错了
break;
printf("server:%s", s);
}
return NULL;
}
void *sendsocket(void *arg)//向server端socket发送数据的线程
{
int st = *(int *)arg;
char s[1024];
while(1)
{
memset(s, 0, sizeof(s));
read(STDIN_FILENO, s, sizeof(s));//从键盘读取用户输入信息
send(st, s, strlen(s), 0);
}
return NULL;