使用C++ Socket library创建套接字并回显收到的数据

2013年6月7日 由 Creater 留言 »

这个套接字类仅仅只有除了构造函数以外的一个方法OnRead(),当Tcp套接字输入缓冲区有数据可用时,OnRead()将可以被SocketHandler 调用。
DisplaySocket.h

#include <TcpSocket.h>
#include <ISocketHandler.h>

class DisplaySocket : public TcpSocket
{
public:
	DisplaySocket(ISocketHandler& );

	void OnRead();
};
#ifdef _MSC_VER
#pragma warning(disable:4786)
#endif
#include "DisplaySocket.h"

// the constant TCP_BUFSIZE_READ is the maximum size of the standard input
// buffer of TcpSocket
#define RSIZE TCP_BUFSIZE_READ

DisplaySocket::DisplaySocket(ISocketHandler& h) : TcpSocket(h)
{
}

void DisplaySocket::OnRead()
{
	// OnRead of TcpSocket actually reads the data from the socket
	// and moves it to the input buffer (ibuf)
	TcpSocket::OnRead();
	// get number of bytes in input buffer
	size_t n = ibuf.GetLength();
	if (n > 0)
	{
		char tmp[RSIZE]; // <--- tmp's here
		ibuf.Read(tmp,n);
		printf("Read %d bytes:\n",n);
		for (size_t i = 0; i < n; i++)
		{
			printf("%c",isprint(tmp[i]) ? tmp[i] : '.');
		}
		printf("\n");
	}
}
广告位

发表评论

你必须 登陆 方可发表评论.