资源简介
本程序使用了Socket,多线程等技术,功能是在控制台中实现多机聊天的功能,环境为windows+vs2013
代码片段和文件信息
// QQ_client.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include
#pragma comment(lib “ws2_32.lib“)
using namespace std;
WSADATA wsd;
//发送数据远程服务器套接字
SOCKET Sremotehost;
//发送数据远程服务器地址
SOCKADDR_IN addrRemoteServ;
int addrRemoteServLen;
//批大小
const int BUFF_SIZE = 1024;
int Init_Chat(char ip[] char port[])//char ip[]char port[]
{
//初始化套接字库
if (WSAStartup(MAKEWORD(2 2) &wsd) != 0)
{
cout << “WSAStartup failed“ << endl;
return -1;
}
cout << “Chat Socket Init...“ << endl;
Sremotehost = socket(AF_INET SOCK_STREAM IPPROTO_TCP);
if (Sremotehost == INVALID_SOCKET)
{
cout << “Chat Socket Failed“ << endl;
WSACleanup();
return -1;
}
cout << “Service Socket Done...“ << endl;
addrRemoteServ.sin_family = AF_INET;
addrRemoteServ.sin_port = htons((short)atoi(port));//4999atoi(port)
addrRemoteServ.sin_addr.s_addr = inet_addr(ip);//“127.0.0.1“
addrRemoteServLen = sizeof(addrRemoteServ);
//连接服务器
int ret = connect(Sremotehost (LPSOCKADDR)&addrRemoteServ addrRemoteServLen);
if (ret == SOCKET_ERROR)
{
cout << “Connect Failed“ << endl;
cout << ::WSAGetLastError() << endl;
closesocket(Sremotehost);
WSACleanup();
return -1;
}
cout << “Connect Done...“ << endl;
return 0;
}
//向服务器发送数据
int Send_Info(char info[])
{
char recv_buf[BUFF_SIZE];
//cout << “Send to service:“ << info << endl;
int ret = send(Sremotehost info BUFF_SIZE 0);
if (ret == SOCKET_ERROR)
{
cout << “Send failed“ << endl;
}
ZeroMemory(recv_buf BUFF_SIZE);//如果不初始化,后面全都是 烫烫烫烫
recv(Sremotehost recv_buf BUFF_SIZE 0);
//cout << sizeof(recv_buf) << “ “ << strlen(recv_buf) << endl;
cout << “Sending... \n“ << recv_buf << endl;
cout << “\n“ << endl;
//getpeername(Sremotehost (struct sockaddr *)&addrRemoteServ &addrRemoteServLen); //获取connfd表示的连接上的对端地址
//cout << “To Friend: “ << inet_ntoa(addrRemoteServ.sin_addr) << “:“ << ntohs(addrRemoteServ.sin_port) << endl;
cout << “\n“ << endl;
return 0;
}
//聊天
int chat()
{
char ip[16] port[6];
cout << “Input his ip“ << endl;
cin >> ip;
cout << “Input his port“ << endl;
cin >> port;
int ret = Init_Chat(ip port);
if (ret == SOCKET_ERROR)
{
cout << “Init Chat Failed“ << endl;
return -1;
}
//Init();
char info[BUFF_SIZE];
cout << “Enjoy your chatting...“ << endl;
cin.get();
cout << “\n“;
while (true)
{
cout << “Please Insert Your Word:(If you want to cancel this chatPlease input quit)“;
ZeroMemory(info BUFF_SIZE);
cin.getline(info 1024 ‘\n‘);
cout << “You:“ << info << endl;
if (strcmp(info “quit“) == 0)
{
cout << “Quiting...“ << endl;
break;
}
Send_Info(info);
}
}
WSADATA wsd2;
//接收消息服务器套接字
SOCKET Sserver;
//接收消息服务器套接字地址
SOCKADDR_IN addrServ;
//接收消息发送方远程客户端套接字
SOCKET Sclient;
//接收消息发送方远程客户端套接字地址
sockaddr_in addrClient;
//接收消息发送方远程客户端套接字地址长度
int addrClientLen;
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 88576 2018-05-07 10:12 SocketDemo\Debug\SocketDemo.exe
文件 577504 2018-05-07 10:12 SocketDemo\Debug\SocketDemo.ilk
文件 1748992 2018-05-07 10:12 SocketDemo\Debug\SocketDemo.pdb
文件 3080192 2018-05-05 15:55 SocketDemo\ipch\socketdemo-195ec9d4\socketdemo-21b5067a.ipch
文件 407 2018-05-07 10:27 SocketDemo\README.txt
文件 1601 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.log
文件 280861 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.obj
文件 1703936 2018-05-05 15:55 SocketDemo\SocketDemo\Debug\SocketDemo.pch
文件 1454 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\cl.command.1.tlog
文件 33298 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\CL.read.1.tlog
文件 7600 2018-05-07 09:49 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\CL.read.4.tlog
文件 21122 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\CL.read.5.tlog
文件 1042 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\CL.write.1.tlog
文件 1284 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\li
文件 3612 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\li
文件 548 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\li
文件 162 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\SocketDemo.tlog\SocketDemo.lastbuildstate
文件 11474 2018-05-05 15:55 SocketDemo\SocketDemo\Debug\stdafx.obj
文件 961536 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\vc120.idb
文件 577536 2018-05-07 10:12 SocketDemo\SocketDemo\Debug\vc120.pdb
文件 1531 2018-05-05 15:55 SocketDemo\SocketDemo\ReadMe.txt
文件 6703 2018-05-07 10:21 SocketDemo\SocketDemo\SocketDemo.cpp
文件 4539 2018-05-05 15:55 SocketDemo\SocketDemo\SocketDemo.vcxproj
文件 1317 2018-05-05 15:55 SocketDemo\SocketDemo\SocketDemo.vcxproj.filters
文件 216 2018-05-05 15:55 SocketDemo\SocketDemo\stdafx.cpp
文件 234 2018-05-05 15:55 SocketDemo\SocketDemo\stdafx.h
文件 236 2018-05-05 15:55 SocketDemo\SocketDemo\targetver.h
文件 37224448 2018-05-07 10:21 SocketDemo\SocketDemo.sdf
文件 976 2018-05-05 15:55 SocketDemo\SocketDemo.sln
..A..H. 19456 2018-05-07 10:21 SocketDemo\SocketDemo.v12.suo
............此处省略10个文件信息
- 上一篇:DevC++ 4.9
- 下一篇:UG二次开发用户界面(MFC简单)
相关资源
- C语言写的UDP文件传输
- C++聊天程序源程序有服务器和客户端
- c++实现socket:一个服务器对应多个客
- 网络协议分析器的设计与实现
- C语言编写双人剪刀石头布联机游戏代
- 基于TCP、IP的网络编程
- 基于SOCKET的C++ 即时通讯系统
- 视频聊天软件Visual C++6.0+Socket网络技术
- socket C语言编写 客户端和服务器端程
- 服务端和客户端(MFC CSocket)
- c++实现局域网文件传送基于socket
- MFC网络聊天工具
- socket编程聊天室C++
- 实验6-基于CSocket的网络程序设计
- 计算机网络课程设计农大socket实现F
- 基于TCP的网络聊天室的设计一步一步
- 用c++实现的抓包并分析协议
- diffie-hellman密钥交换协议vc++实现
- MFC编程实现socket通信
- 基于MFC的嗅探器
- 实现客户端与服务端的文件传输
- 完整socket c++
- Socket网络编程控制台+MFC TCP
- C语言搭建的简单web服务器
- c语言实现ftp文件传输
- 多人聊天室 C++
- 使用TCP简单文件传输控制台程序VC++
- C++编写的Socket通信程序源代码
- 利用MFC的Csocket类实现网络通信
- Socket文件传输
评论
共有 条评论