Udp聊天室客户端

#ifndef _CHATING_H_
#define _CHATING_H_
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <time.h>
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define PORT             8888

struct userinfo
{
 int flag;//传输信息标志
 char buf[100];//传输信息标志
 char account[20];
 char password[20];
 char nickname[100];
 char moto[256];
 int likes;
 char vip[20];
 char qq_email[64];
 char administrator[20];//管理员
 char msg[1024];//存储对话消息
 char to_nickname[20];//所要发送消息的对象昵称
 int online_number;
 char online_nickname[100][20];//存储在线人员名单//之前定义指针数组一直出错
 char file_name[64];//文件名称
 char file_content[4096];//文件内容 
 char shut_up[20];//禁言标志位
 char tmp_name[20];//
};
typedef struct userinfo Userinfo;
struct node
{
 struct sockaddr_in *client_addr;
 char nickname[20];
 char chat_record[1024];//链表保存聊天信息(谁发给谁)
 struct node *next;
};
typedef struct node Node;
void show_first1();
void show_first2();
void print_info();
int mygetch();
int getpasswd(char *passwd, int size);
int client_creat();
int Register(Userinfo *sendbuf);
int Login(Userinfo *sendbuf);
void login_screen();
void chat_function(int *sockfd, struct sockaddr_in *server_addr);
void *read_from_server(void *arg);
#endif


#include <stdio.h>
#include "client.h"
extern Userinfo RECVBUF;
extern OUT;
extern OUT1;
char time_info[128] = {0};
void time_show()
{
  time_t rawtime;
  struct tm *timeinfo;
  time (&rawtime);
   timeinfo = localtime(&rawtime);
  printf("时间: %d 年 %d 月 %d 日 %d 时 %d 分 %d 秒\n\n", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
}
char *time_show1()

  time_t rawtime;
  struct tm *timeinfo;
  time (&rawtime);
   timeinfo = localtime(&rawtime);
  sprintf(time_info, "时间: %d 年 %d 月 %d 日 %d 时 %d 分 %d 秒\n\n", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
  return time_info;
}
void show()//欢迎界面
{
 system("clear");
 system("tput cup 1 0"); printf("\e[0;34;1m=\e[0m\n");
 system("tput cup 10 102");printf("\e[0;34;1m=\e[0m\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("=\e[0;34;1m=\e[0m\n");
 system("tput cup 10 101");printf("\e[0;34;1m=\e[0m=\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("==\e[0;34;1m=\e[0m\n");
 system("tput cup 10 100");printf("\e[0;34;1m=\e[0m==\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("===\e[0;34;1m=\e[0m\n");
 system("tput cup 10 99");printf("\e[0;34;1m=\e[0m===\n");usleep(80000);
 system("clear");//5
 system("tput cup 1 0"); printf("====\e[0;34;1m=\e[0m\n");
 system("tput cup 10 98");printf("\e[0;34;1m=\e[0m====\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("=====\e[0;34;1m=\e[0m\n");
 system("tput cup 10 97");printf("\e[0;34;1m=\e[0m=====\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("======\e[0;34;1m=\e[0m\n");
 system("tput cup 10 96");printf("\e[0;34;1m=\e[0m======\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("=======\e[0;34;1m=\e[0m\n");
 system("tput cup 10 95");printf("\e[0;34;1m=\e[0m=======\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("========\e[0;34;1m=\e[0m\n");
 system("tput cup 10 94");printf("\e[0;34;1m=\e[0m========\n");usleep(80000);
 system("clear");//10
 system("tput cup 1 0"); printf("=========\e[0;34;1m=\e[0m\n");
 system("tput cup 10 93");printf("\e[0;34;1m=\e[0m=========\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("==========\e[0;34;1m=\e[0m\n");
 system("tput cup 10 92");printf("\e[0;34;1m=\e[0m==========\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("===========\e[0;34;1m=\e[0m\n");
 system("tput cup 10 91");printf("\e[0;34;1m=\e[0m===========\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("============\e[0;34;1m=\e[0m\n");
 system("tput cup 10 90");printf("\e[0;34;1m=\e[0m============\n");usleep(80000);
 system("clear");
 system("tput cup 1 0"); printf("=============\e[0;34;1m=\e[0m\n");
 system("tput cup 10 89");printf("\e[0;34;1m=\e[0m=============\n");usleep(80000);
 system("clear");//15
 system("tput cup 1 0"); printf("==============\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("\e[0;34;1m自\e[0m\n");
 system("tput cup 10 88");printf("\e[0;34;1m=\e[0m==============\n");usleep(500000);
 system("clear");//20
 system("tput cup 1 0"); printf("===============\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   \e[0;34;1m在\e[0m\n");
 system("tput cup 10 87");printf("\e[0;34;1m=\e[0m===============\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   \e[0;34;1m飞\e[0m\n");
 system("tput cup 10 86");printf("\e[0;34;1m=\e[0m================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("=================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   \e[0;34;1m花\e[0m\n");
 system("tput cup 10 85");printf("\e[0;34;1m=\e[0m=================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("==================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   \e[0;34;1m轻\e[0m\n");
 system("tput cup 10 84");printf("\e[0;34;1m=\e[0m==================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("===================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   \e[0;34;1m似\e[0m\n");
 system("tput cup 10 83");printf("\e[0;34;1m=\e[0m===================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("====================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   \e[0;34;1m梦\e[0m\n");
 system("tput cup 10 82");printf("\e[0;34;1m=\e[0m====================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("=====================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 10 81");printf("\e[0;34;1m=\e[0m=====================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("======================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 6 53");printf("\e[0;34;1m无\e[0;34;0m\n");
 system("tput cup 10 80");printf("\e[0;34;1m=\e[0m======================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("=======================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 6 53");printf("无   \e[0;34;1m边\e[0;34;0m\n");
 system("tput cup 10 79");printf("\e[0;34;1m=\e[0m=======================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("========================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 6 53");printf("无   边   \e[0;34;1m丝\e[0;34;0m\n");
 system("tput cup 10 78");printf("\e[0;34;1m=\e[0m========================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("=========================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 6 53");printf("无   边   丝   \e[0;34;1m雨\e[0;34;0m\n");
 system("tput cup 10 77");printf("\e[0;34;1m=\e[0m=========================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("==========================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 6 53");printf("无   边   丝   雨   \e[0;34;1m细\e[0;34;0m\n");
 system("tput cup 10 76");printf("\e[0;34;1m=\e[0m==========================\n");usleep(500000);
 system("clear");
 system("tput cup 1 0"); printf("===========================\e[0;34;1m=\e[0m\n");
 system("tput cup 4 15");printf("自   在   飞   花   轻   似   梦\n");
 system("tput cup 5 49");printf("\e[0;31;1m,\e[0;31;0m\n");
 system("tput cup 6 5
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/UDP聊天是一种通过网络实现即时通信的应用程序。它允许多个用户在同一时间内进行文本消息的发送和接收。TCP和UDP是两种常用的传输协议,它们在网络编程中被广泛使用。 TCP聊天使用TCP协议进行通信。TCP提供可靠的、面向连接的通信,确保数据按照发送的顺序到达目标,并且没有丢失或重复。在TCP聊天中,服务器和客户之间建立一个TCP连接,通过这个连接传输消息。服务器充当中央控制器,接收客户的消息并将其广播给其他客户UDP聊天使用UDP协议进行通信。UDP是一种无连接的协议,不保证数据的可靠性和按序传输。在UDP聊天中,服务器和客户之间也建立一个UDP连接,但是每个消息都是独立发送的,没有建立持久的连接。服务器接收客户的消息并将其广播给其他客户。 为了实现TCP/UDP聊天,你需要以下几个步骤: 1. 创建服务器客户的代码,分别使用TCP和UDP协议进行通信。 2. 在服务器,创建一个套接字并绑定到一个特定的口。 3. 在服务器,监听来自客户的连接请求并接受连接。 4. 在服务器,接收来自客户的消息并广播给其他客户。 5. 在客户,创建一个套接字并连接到服务器的IP地址和口。 6. 在客户,发送消息到服务器并接收来自服务器的消息。 7. 在客户,显示接收到的消息。 需要注意的是,TCP和UDP聊天的实现方式会有所不同。在TCP聊天中,需要使用ServerSocket和Socket类来建立连接和传输消息。而在UDP聊天中,则需要使用DatagramSocket和DatagramPacket类来发送和接收UDP数据包。 参考代码中的TcpServer类展示了一个使用TCP实现的简单服务器代码。该代码创建了一个ServerSocket并监听9000口,接收客户的连接并接收消息。你可以根据需要修改和扩展这个代码来实现一个TCP聊天。 请注意,以上只是一个TCP/UDP聊天的简单实现示例,实际的聊天还需要处理更多的细节,例如用户身份验证、消息加密和防止恶意攻击等。这些细节可以根据具体需求和安全性要求进行设计和实现。 希望以上信息对你有帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值