c++ telnet

又一个 Telnet 三无程序
转自:http://www.freeeim.com/
双击自动滚屏 发布者:Alex 发布时间:2008-6-4 阅读:97次


所谓三无:
1.无内存泄漏;
2.无多余代码;
3.无实际用途(测试专用,呵呵)。
为了把打字时间转化为代码优化时间,所以很多代码都是这里COPY来,那里COPY去的。
注:此程序只适合初学者研究,高手等辈请不屑一顾。
说什么也没用,看代码最实际;
完整打包下载地址:http://www.freeeim.com/downloads/telnet.zip
//
// client
// testsocket02.cpp : Defines the entry point for the console application.
// 最近不知为什么,老喜欢Copy别人的代码,然后往自己程序里粘贴。
// 拼拼凑凑,有多了一个工能。
#include "stdafx.h"
#include <stdlib.h>
#include <winsock2.h>
#include <process.h>
#include <conio.h>
#pragma comment(lib, "ws2_32.lib")
int tt = 1;
// 专门接受
void r(void* sock)
{
if(NULL == sock)
_endthread();
sockaddr_in aa;
SOCKET *s2 = (SOCKET*)sock;
int slen = sizeof(aa);
SOCKET s = *s2;
char c;
int rval = 0;
getpeername(s,(sockaddr*)&aa,&slen);
printf("OK , connected with %s:%u...\r\n\r\n",inet_ntoa(aa.sin_addr),ntohs(aa.sin_port));
while(tt)
{
rval = recv(s,&c,1,0);
if (rval == 0 || rval == -1)
{
printf("--- Disconnected !\r\n\r\n");
// 自然死
_endthread();
}
putc(c,stdout);
}
}
int main(int argc, char* argv[])
{
WSADATA wData;
WSAStartup(MAKEWORD(2,2),&wData);
SOCKET s;
bool SSL = false;
sockaddr_in dA,aa;
int slen = sizeof(sockaddr_in);
memset(&dA,0,sizeof(dA));
dA.sin_family = AF_INET;
unsigned long inaddr;
inaddr = inet_addr("127.0.0.1");
if (inaddr != INADDR_NONE)
memcpy(&dA.sin_addr,&inaddr,sizeof(inaddr));
else
printf("error.\n");
dA.sin_port = htons(1888);
s = socket(AF_INET,SOCK_STREAM,0);
if (INVALID_SOCKET == s)
printf("error.\n");
if (connect(s,(sockaddr*)&dA,slen) < 0)
{
printf("--- Cannot connect !\r\n");
return 3;
}
_beginthread(r, 4026, &s);
while(tt)
{
char c = getche();
if (c == 13)
{
c = '\n';
putch©;
}
int rval = 0;
rval = send(s,&c,1,0);
if (rval == 0 || rval == -1)
{
printf("\n--- Disconnected !\r\n\r\n");
// 让r线程自然死
tt=0;
}
}
printf("Hello World!\n");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值