RT。。。就是网络编程课的任务啊、
写了一个服务器与客户端的控制台程序,实现一来一回的即时聊天,可显示发送时间,以关键字bye结束连接
遗憾的是也只能一来一回,不能某端连续发送消息
在执行监听函数的时候就不能执行输入,或者这就是黑屏程序吧…
查了下貌似其实也能做到,利用多线程?不过现在没去找资料学习了
明天就是上机课,这个实验一任务截止,先把代码po到博客里。
服务器端
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#include <time.h>
#pragma comment (lib,"Ws2_32.lib")
#define NUM 10 // 最大客户端连接数
void END(SOCKET &ListenSocket,SOCKET &ClientSocket) // 释放相关资源
{
closesocket(ListenSocket);
closesocket(ClientSocket);
WSACleanup();
}
void OutputTime()
{
time_t T;
struct tm *p;
time (&T);
p = localtime(&T);
printf("%d/%02d/%02d %02d:%02d:%02d\n\n",1900+p->tm_year,1+p->tm_mon,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
}
int main()
{
system("title 服务器端");
system("mode con cols=49 lines=30");
char servername[100]={
"Server"}; // 存储服务器名称
char clientname[100]={
0};
WSADATA wsaData;
char buf[100]={
0}; //发送数据缓冲区
char getbuf[100]={
0}; //接收数据缓冲区// 创建类型为WSADATA的对象
int iResult = WSAStartup(MAKEWORD(2,2),&wsaData); // 初始化winsock并根据返回值判断错误信息
if(iResult!=0)
{
printf("初始化失败。错误代码:%d\n",iResult);
return 1;
}
SOCKET ListenSocket,ClientSocket; // 定义监听和通信套接字
ListenSocket = socket(AF_INET,SOCK_STREAM,0); // 定义此Socket所使用的通信协议:IPV4地址族、流式套接字、不指定通信协议
sockaddr_in addr,addr2; // 定义套接字地址结构
addr.sin_family = AF_INET; // 初始化地址结构
addr.sin_port = htons(75);
addr.sin_addr.S_un.S_addr = INADDR_ANY;
int addr2Len = sizeof(addr2); // 获取套接字地址结构大小
bind(ListenSocket, (sockaddr*)&addr, sizeof