• 大小: 8.12MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-16
  • 语言: C/C++
  • 标签: Socket  

资源简介

本程序使用了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\link.command.1.tlog

     文件       3612  2018-05-07 10:12  SocketDemo\SocketDemo\Debug\SocketDemo.tlog\link.read.1.tlog

     文件        548  2018-05-07 10:12  SocketDemo\SocketDemo\Debug\SocketDemo.tlog\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论