小鱼儿--控制台p2p聊天工具(里面)
自己这1天看了好多有关网络编程视频+加书籍。。感觉其实都差不多,看了高手说得很简洁明了。所以看书和视频还是要看高手,名师的。
一些二流人确实差多了,说也不说清,只要糊弄过就算了。
发现看了那么多,还不与早点写代码,就不会浪费自己一天的时间看他们。早点写还好一点。。
本想用select模型。但我发现我这样的控制台没有用。一样像那么一回事。
申明:pcc32.h 是一位高手RedOc写的函数库。 我直接拿来用了,省的自己写。。。
本想在控制台画矩形的,由于难得麻烦。自己直接用直线代替了,但由于中文字符有间隔,根本就不能连起来。。。
本想加一个可以加一个后门程序,没有精力写了,没有时间了,又到了期末了,还是要看下书。。。。
直接贴图:
程序代码:#include "StdAfx.h"
#include "Server.h"
#include <string.h>
#include "pcc32.h"
#include "MyLine.h"
#include "Init.h"
Pos xyPos={1,1};
DWORD WINAPI ServerThreadFun(LPVOID laparam)
{
char buf[256];
SOCKET m_sock=*(SOCKET *)laparam;
while(1)
{
gotoxy(6,21);
/*puts("send:");*/
gets(buf);
Sleep(50);
ClearThere(6,21,65,23);
int flag=send(m_sock,buf,256,0);
if(flag)
{
gotoxy(42,15);
puts("发送成功");
}
}
return 1;
}
int TcpServer()
{
WSADATA data;
ZeroMemory(&data,sizeof(data));
WSAStartup(MAKEWORD(2,0),&data);
SOCKET sListen=socket(AF_INET,SOCK_STREAM,0);
if(sListen==INVALID_SOCKET)
{
return FALSE;
}
sockaddr_in local={0},client;
local.sin_family=AF_INET;
local.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
local.sin_port=htons(1808);
if(bind(sListen,(sockaddr *)&local,sizeof(sockaddr_in))==SOCKET_ERROR)
{
return FALSE;
}
if(listen(sListen,5)==SOCKET_ERROR)
{
return FALSE;
}
gotoxy(42,8);
puts("服务已经启动");
int addrlen=sizeof(sockaddr_in);
SOCKET sClient=accept(sListen,(sockaddr *)&client,&addrlen);
char buf[256]={0};
sprintf(buf,"IP:%s 端口%d",inet_ntoa(client.sin_addr),ntohs(client.sin_port));
gotoxy(42,12);
puts(buf);
gotoxy(6,21);
CreateThread(NULL,0,ServerThreadFun,&sClient,0,0);
while(1)
{
char buf[256];
int flag=recv(sClient,buf,sizeof(buf),0);
if(flag<=0)
{
gotoxy(42,15);
puts("你的朋友已经下线了");
break;
}
else
{
gotoxy(xyPos.x,xyPos.y);
puts(buf);
xyPos.x=getCursorX();
xyPos.y=getCursorY();
if(xyPos.y>=19)
{
ClearThere(0,1,38,19);
xyPos.x=1;
xyPos.y=1;
}
}
gotoxy(6,21);
}
closesocket(sClient);
closesocket(sListen);
WSACleanup();
return 1;
}









我的技术还很差呢。。。。。
