资源简介
基于TCP的简单一对一聊天程序设计
代码片段和文件信息
#include “Client.h“
//Global Message object
#pragma comment(lib“wsock32.lib“)
CIPMessage MyMessObj;
CIPMessage::CIPMessage()//MyMessObj构造函数
{
m_bIsConnected = false;
}
void CIPMessage::Init(string sIpAddress int iPort)//建立与服务器端得连接
{
m_sServerIPAddress = sIpAddress;
m_iServerPort = iPort;
struct hostent *hp;
unsigned int addr;
struct sockaddr_in server;
WSADATA wsaData;
int wsaret=WSAStartup(0x101&wsaData);//应用程序调用的第一个Windows Sockets函数.
//它允许应用程序或DLL指明Windows Sockets API的版本号及获得特定Windows Sockets实现的细节.
if(wsaret!=0)
{
return;
}
conn=socket(AF_INETSOCK_STREAM0);//建立客户端套接字
if(conn==INVALID_SOCKET)
return;
addr=inet_addr(m_sServerIPAddress.c_str());//转化ip地址和端口为指定形式
hp=gethostbyaddr((char*)&addrsizeof(addr)AF_INET);
if(hp==NULL)
{
closesocket(conn);
return;
}
server.sin_addr.s_addr=*((unsigned long*)hp->h_addr);
server.sin_family=AF_INET;
server.sin_port=htons(m_iServerPort);
if(connect(conn(struct sockaddr*)&serversizeof(server)))//向指定服务器建立连接
{
closesocket(conn);
return;
}
m_bIsConnected = true;
return;
}
CIPMessage::~CIPMessage()//MyMessObj析构函数
{
if(m_bIsConnected)
closesocket(conn);
}
int CIPMessage::SendMessagePort(string sMessage)//向指定服务器发出数据
{
int iStat = 0;
iStat = send(connsMessage.c_str()sMessage.size()+10);
if(iStat == -1)
return 1;
return 0;
}
int CIPMessage::RecMessagePort()//接收指定服务器数据
{
char acRetData[4096];
int iStat = 0;
iStat = recv(connacRetData40960);
if(iStat == -1)
return 1;
cout<<“-->:“< return 0;
}
UINT MessageRecThread(LPVOID pParam)//接收指定服务器数据线程
{
while(1)
{
if(MyMessObj.RecMessagePort())
break;
}
return 0;
}
int main(int argc char* argv[])
{
char buf[4096];
cout<<“This is a client TCP/IP application\nConnecting to port 8084\n“;
cout<<“\nPress ONLY ENTER to quit“;
cout<<“\n===============================================\n“;
FILE *fp = fopen(“server.ini““r“);//获取服务器端套接字地址
if(fp == NULL)
{
cout<<“\nUnable to open server.ini. Please specify server IPsddress in server.ini“;
return 1; // main failed
}
string sServerAddress;
while((fgets(buf4096fp)) != NULL)
{
if(buf[0] == ‘#‘)
continue;
sServerAddress = buf;
}
fclose(fp);
if(sServerAddress.size() == 0)
{
cout<<“\nUnable to find server IPaddress in server.ini“;
cout<<“\nPlease set server IPaddress“;
cout<<“\nBYEBYE:“;
getch();
return 0;
}
MyMessObj.Init(sServerAddress.c_str()8084);//启动与服务器连接
if(!MyMessObj.IsConnected())
{
cout<<“\nUnable to connect to the IPaddress specified in server.ini“;
cout<<“\nPlease check server IPaddress“;
cout<<“\nReady to see goodbye:“;
getch();
return 0;
}
AfxBeginThread(MessageRecThread0);//开启接收数据线程
while(gets(buf))
{
if(strlen(buf) == 0)
break;
if(MyMessObj.SendMessagePort(buf))//向服务器发送数据
{
cout<<“Problem in connecting to server. Check whether server is run
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3242 2014-07-06 01:09 TCP\Client\Client.cpp
文件 3265 2014-07-08 00:39 TCP\Client\Client.dsp
文件 518 2014-07-08 00:39 TCP\Client\Client.dsw
文件 517 2014-07-06 00:51 TCP\Client\Client.h
文件 41984 2014-07-08 00:39 TCP\Client\Client.ncb
文件 48640 2014-07-08 00:39 TCP\Client\Client.opt
文件 464 2014-07-08 00:38 TCP\Client\Client.plg
文件 1429551 2014-07-08 00:38 TCP\Client\Debug\Client.exe
文件 1907872 2014-07-08 00:38 TCP\Client\Debug\Client.ilk
文件 78489 2014-07-08 00:38 TCP\Client\Debug\Client.obj
文件 4920964 2014-07-08 00:38 TCP\Client\Debug\Client.pch
文件 2614272 2014-07-08 00:38 TCP\Client\Debug\Client.pdb
文件 279552 2014-07-08 00:38 TCP\Client\Debug\vc60.idb
文件 110592 2014-07-08 00:38 TCP\Client\Debug\vc60.pdb
文件 11 2014-07-06 01:04 TCP\Client\server.ini
文件 1425455 2014-07-08 00:38 TCP\Server\Debug\Server.exe
文件 1905840 2014-07-08 00:38 TCP\Server\Debug\Server.ilk
文件 91479 2014-07-08 00:38 TCP\Server\Debug\Server.obj
文件 5373704 2014-07-08 00:38 TCP\Server\Debug\Server.pch
文件 2597888 2014-07-08 00:38 TCP\Server\Debug\Server.pdb
文件 295936 2014-07-08 00:38 TCP\Server\Debug\vc60.idb
文件 118784 2014-07-08 00:38 TCP\Server\Debug\vc60.pdb
文件 3545 2014-07-06 01:08 TCP\Server\Server.cpp
文件 3265 2014-07-08 00:39 TCP\Server\Server.dsp
文件 518 2014-07-08 00:39 TCP\Server\Server.dsw
文件 682 2014-07-06 00:49 TCP\Server\Server.h
文件 11 2014-07-06 01:04 TCP\Server\server.ini
文件 50176 2014-07-08 00:39 TCP\Server\Server.ncb
文件 48640 2014-07-08 00:39 TCP\Server\Server.opt
文件 841 2014-07-08 00:38 TCP\Server\Server.plg
............此处省略9个文件信息
相关资源
- STM32实现Web服务器
- stm32 lwip DNS DHCP ucosIII TCP Client 原创程
- STM32 UIP演示
- TCP连接测试工具_强烈推荐!
- TCP/IP调试工具大合集
- 西门子300 PLC MODBUS TCP通讯 程序
- Modbus TCP/RTU 服务端、客户端源码、协
- 关于串口PLC联网取数与PLC之间通讯
- VS2010 TCP一个进程拥有多个端口,cli
- 内建MODBUS网关功能的串口服务器及M
- modbus协议调试工具 支持TCP和串口
- TCPIP协议族 第四版答案
- modbus tcp 中文协议
- Linux网络体系结构-Linux内核中网络协议
- RtspRtcpRtpLoad_h264.tar.gz
- 局域网聊天qq
- 网络调试助手-全平台
- STM32F103C8T6核心板 + ENC28J60
- S7-1500ModbusTCP通信_内带PortalV15程序
- TCPIP协议原理课件
- IP抓包工具
- EC20状态机代码TCP传GPS数据
- 简单的RTSP RTP RTCP推送H264码流服务器实
- 网络协议分析
- CodeSys如何实现TCPIP通信
- 用VC2010编写的基于TCPIP的Modbus网络通讯
- 基于tcp的异步套接字客户端服务端通
- 网络嗅探,主机扫描,端口扫描
- 串口调试助手+TCP/IP通信+源码
- Esp8266】百万条消息免费之乐鑫esp826
评论
共有 条评论