本文整理汇总了C++中sf::TcpSocket类的典型用法代码示例。如果您正苦于以下问题:C++ TcpSocket类的具体用法?C++ TcpSocket怎么用?C++ TcpSocket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TcpSocket类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sendRegisteringToken
void Client::sendRegisteringToken(const std::string& name, const std::string& password, sf::TcpSocket& socket)
{
sf::Packet packet;
packet << TransferType::REGISTERING << name << password;
if(socket.send(packet) != sf::Socket::Done)
throw std::runtime_error("sending packet failed.");
// Receive the server response
socket.receive(packet);
TransferType response;
packet >> response;
switch(response)
{
case TransferType::USERNAME_NOT_AVAILABLE:
throw std::runtime_error("the username " + name + " is not available.");
case TransferType::FAILED_TO_REGISTER:
throw std::runtime_error("the server failed to register your account.");
case TransferType::ACKNOWLEDGE:
return;
default:
throw std::runtime_error("unidentified server response.");
}
}
开发者ID:RobinPetit,项目名称:WizardPoker,代码行数:26,代码来源:Client.cpp
示例2: getAccountName
void ServerController::getAccountName(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string username, target, first, last;
bool exists = false;
packet >> username >> target;
std::cout << "Attempting to find full name for User " << target << std::endl;
// authenticate request
if (checkAccount(username) == -1)
{
return;
}
int targetIndex = checkAccount(target);
if (targetIndex != -1)
{
std::cout << "User does exist" << std::endl;
first = data.accounts[targetIndex].getFirstName();
last = data.accounts[targetIndex].getLastName();
exists = true;
response << exists << first << last;
client.send(response);
return;
}
std::cout << "User does not exist" << std::endl;
response << exists;
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:27,代码来源:ServerController.cpp
示例3: addMember
void ServerController::addMember(sf::Packet &packet, sf::TcpSocket &client, Account::AccessLevel level)
{
sf::Packet response;
std::string username, conference, targetUser;
packet >> username >> conference >> targetUser;
bool success = false;
int findIndex = checkAccount(username);
int targetIndex = checkAccount(targetUser);
int confIndex = checkConference(conference);
if (findIndex == -1 || targetIndex == -1 || confIndex == -1)
{
success = false;
response << success;
client.send(response);
return;
}
// add access to the conference in the target user's accessmap
data.accounts[targetIndex].addAccess(conference, level);
if (level == Account::Access_Reviewer)
{
data.conferences[confIndex].addReviewer(targetUser);
}
// add welcome notification to the user
addNotification(targetUser, "Welcome to " + conference + "!");
success = true;
response << success;
client.send(response);
data.saveAccounts();
data.saveConferences();
}
开发者ID:kh901,项目名称:Elements,代码行数:32,代码来源:ServerController.cpp
示例4: getLimit
void ServerController::getLimit(sf::Packet &packet, sf::TcpSocket &client, const std::string &mode)
{
sf::Packet response;
std::string username, conference;
sf::Int16 limit;
packet >> username >> conference >> limit;
// authenticate request
int accIndex = checkAccount(username);
if (accIndex == -1)
{
return;
}
// authenticate conference
int confIndex = checkConference(conference);
if (confIndex == -1)
{
return;
}
if (mode == "ALLOCATED")
{
limit = data.conferences[confIndex].getMaxReviewedPapers();
}
else if (mode == "PAPERREV")
{
limit = data.conferences[confIndex].getMaxPaperReviewers();
}
response << limit;
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:29,代码来源:ServerController.cpp
示例5: checkReviewed
void ServerController::checkReviewed(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string user, conference, paper, first, last;
packet >> user >> conference >> paper;
// authenticate request
int findIndex = checkAccount(user);
if (findIndex != -1)
{
first = data.accounts[findIndex].getFirstName();
last = data.accounts[findIndex].getLastName();
}
bool hasReviewed = false;
for (int i = 0; i < (int)data.reviews.size(); ++i)
{
if (data.reviews[i].getTitle() == paper && data.reviews[i].getConference() == conference)
{
if (data.reviews[i].getPCMember() == (first + " " + last))
{
hasReviewed = true;
break;
}
}
}
response << hasReviewed;
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:29,代码来源:ServerController.cpp
示例6: getReview
void ServerController::getReview(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string username, conf, id;
Review aReview;
bool found = false;
packet >> username >> conf >> id;
// authenticate request
if (checkAccount(username) == -1)
{
return;
}
// authenticate conference
if (checkConference(conf) == -1)
{
return;
}
// find review with id
std::vector<Review>::iterator it;
for (it = data.reviews.begin(); it != data.reviews.end(); ++it)
{
if (it->getReviewID() == id)
{
aReview = *it;
found = true;
break;
}
}
response << found;
if (found)
{
response << aReview;
}
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:35,代码来源:ServerController.cpp
示例7: getComments
void ServerController::getComments(sf::Packet &packet, sf::TcpSocket &client)
{
std::string conference, paperTitle;
sf::Packet response;
packet >> conference >> paperTitle;
std::vector<Comment> comments;
for (int i = 0; i < (int)data.submissions.size(); i++)
{
if (data.submissions[i].getConference() == conference)
{
if (data.submissions[i].getTitle() == paperTitle)
{
data.submissions[i].getComments(comments);
}
}
}
response << (int)comments.size();
for (int i = 0; i < (int)comments.size(); i++)
{
response << comments[i];
}
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:26,代码来源:ServerController.cpp
示例8: getConfSubmissions
void ServerController::getConfSubmissions(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string conference;
std::vector<std::string> submission;
packet >> conference;
for (int i = 0; i < (int)data.submissions.size(); i++)
{
if(data.submissions[i].getConference() == conference)
{
submission.push_back(data.submissions[i].getTitle());
}
}
response << (int)submission.size();
for (int i = 0; i < (int)submission.size(); i++)
{
response << submission[i];
}
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:25,代码来源:ServerController.cpp
示例9: checkPaperAlloc
void ServerController::checkPaperAlloc(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string conference, paperTitle;
int rev_count;
bool result = false;
packet >> conference >> paperTitle;
int confIndex = checkConference(conference);
if(confIndex == -1)
{
return;
}
int max_rev = data.conferences[confIndex].getMaxPaperReviewers();
for (int i = 0; i < (int)data.submissions.size(); i++)
{
if (data.submissions[i].getConference() == conference)
{
if(data.submissions[i].getTitle() == paperTitle)
{
rev_count = data.submissions[i].getReviewerCount();
if (rev_count < max_rev)
{
result = true;
break;
}
}
}
}
response << result;
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:34,代码来源:ServerController.cpp
示例10: getConferenceSubs
void ServerController::getConferenceSubs(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string conf;
packet >> conf;
// add all matching submissions with this conference name
std::vector<std::string> results;
std::vector<Submission>::iterator it;
for (it = data.submissions.begin(); it != data.submissions.end(); ++it)
{
if (it->getConference() == conf)
{
results.push_back(it->getTitle());
}
}
// pack into the response packet
response << (int)results.size();
for (int i = 0; i < (int)results.size(); ++i)
{
response << results[i];
}
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:25,代码来源:ServerController.cpp
示例11: loginAccount
void ServerController::loginAccount(sf::Packet &packet, sf::TcpSocket &client){
sf::Packet validate;
std::string username, password;
bool valid = false;
packet >> username >> password;
int findIndex = checkAccount(username,password);
if (findIndex != -1)
{
valid = true;
}
if (valid)
{
// set the user as logged in
data.accounts[findIndex].startSession();
data.addLog(username + " has logged in.");
data.saveAccounts();
}
validate << valid;
client.send(validate);
}
开发者ID:kh901,项目名称:Elements,代码行数:25,代码来源:ServerController.cpp
示例12: paperSubmission
void ServerController::paperSubmission(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
Submission sub;
bool exists = false;
std::string username, conference, title;
packet >> username;
int findIndex = checkAccount(username); //get Account index
if (findIndex == -1)
{
return; // ignore request if user is not found
}
packet >> sub;
conference = sub.getConference();
title = sub.getTitle();
int confIndex = checkConference(conference);
if (confIndex == -1)
{
return; // ignore request if conference is not found
}
if (data.accounts[findIndex].getAccess(conference) < Account::Access_Author)
{
return; // ignore request if user is not at least an author of that conference
}
// check conference is in submission phase
if (data.conferences[confIndex].getCurrentPhase() != "Submission")
{
return; // ignore request if conference is not accepting submissions
}
// check that the paper does not already exist
if (checkSubmission(title, conference) == -1)
{
// set the papers university to the submitting author
sub.setUniversity(data.accounts[findIndex].getUniversity());
// add the submitting author as an author
std::string firstname = data.accounts[findIndex].getFirstName();
std::string lastname = data.accounts[findIndex].getLastName();
sub.addAuthor(firstname, lastname);
data.submissions.push_back(sub);
data.saveSubmissions();
data.addLog("Paper was submitted: " + title + " by " + username + " for conference " + conference);
addNotification(username, "You submitted a paper '" + title + "' to " + conference);
notifyConference(conference,
username + " submitted a paper '" + title + "' to " + conference,
Account::Access_Chairman);
}
else
{
exists = true;
}
response << exists;
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:58,代码来源:ServerController.cpp
示例13: sync
void Player::sync(sf::TcpSocket & socket)
{
if (mEntity)
{
sf::Packet packet;
packet << Cl::GameEvent << GameEvent::MoveEntity << mEntity->getID() << mEntity->getPosition().x << mEntity->getPosition().y;
socket.send(packet);
packet.clear();
packet << Cl::GameEvent << GameEvent::RotateEntity << mEntity->getID() << mEntity->getRotation();
socket.send(packet);
if (mSkill1)
{
if (mEntity->getType() == Entity::Type::Human)
{
sf::Packet packet;
packet << Cl::GameEvent << GameEvent::ShootBullet <<mEntity->getID() << mEntity->getRotation() << mEntity->getCenter().x << mEntity->getCenter().y;
socket.send(packet);
}
else if (mEntity->getType() == Entity::Type::Zombie)
{
std::cout << "Zombie melee attack\n";
sf::Packet packet;
packet << Cl::GameEvent << GameEvent::ZombieMeleeAttack;
Zombie * z = static_cast<Zombie*>(mEntity);
sf::FloatRect rect = z->getMeeleAttackBox();
packet << rect.top << rect.left << rect.width << rect.height;
std::cout << rect.top << ", " << rect.left << ", " << rect.width << ". " << rect.height << "\n";
socket.send(packet);
}
}
}
}
开发者ID:kiwon0905,项目名称:PT,代码行数:42,代码来源:Player.cpp
示例14: receiveTime
sf::Socket::Status NETSERVER::receiveTime(sf::TcpSocket &p_socket, char* p_buffer, const unsigned int p_limit, size_t &p_received)
{
sf::SocketSelector selector;
selector.add(p_socket);
if (selector.wait(sf::seconds(2)))
{
return p_socket.receive(p_buffer, p_limit, p_received);
}
else
{
return sf::Socket::NotReady;
}
} // receiveTime()
开发者ID:Oxmose,项目名称:Retro-Wars,代码行数:14,代码来源:Server.cpp
示例15: informWorldState
// Tell the newly connected peer about how the world is currently
void GameServer::informWorldState(sf::TcpSocket& socket) {
sf::Packet packet;
packet << static_cast<sf::Int32>(Server::InitialState);
packet << mWorldHeight << mBattleFieldRect.top + mBattleFieldRect.height;
packet << static_cast<sf::Int32>(mAircraftCount);
for (std::size_t i = 0; i < mConnectedPlayers; ++i) {
if (mPeers[i]->ready) {
for(sf::Int32 identifier : mPeers[i]->aircraftIdentifiers)
packet << identifier << mAircraftInfo[identifier].position.x << mAircraftInfo[identifier].position.y << mAircraftInfo[identifier].hitpoints << mAircraftInfo[identifier].missileAmmo;
}
}
socket.send(packet);
}
开发者ID:WillSams,项目名称:SFML-Book-Exercises,代码行数:16,代码来源:GameServer.cpp
示例16: registerAccount
bool ServerController::registerAccount(sf::Packet &packet, sf::TcpSocket &client){
sf::Packet existsPacket;
std::string username,password,email,university, firstname, lastname;
std::vector<std::string> keywords;
int keywordSize = 0;
packet >> username >> password >> firstname >> lastname >> email >> university >> keywordSize;
std::string tmpkeyword;
for (int i = 0; i < keywordSize; ++i)
{
packet >> tmpkeyword;
keywords.push_back(tmpkeyword);
}
bool exists = false;
int index = checkAccount(username);
if (index == -1)
{
data.addLog("New user registered! Welcome " + username);
Account tmp;
tmp.setUsername(username);
tmp.setPassword(password);
tmp.setFirstName(firstname);
tmp.setLastName(lastname);
tmp.setEmail(email);
tmp.setUniversity(university);
for (int i = 0; i < keywordSize; ++i)
{
tmp.addKeyword(keywords[i]);
}
// registered users start logged in
tmp.startSession();
data.accounts.push_back(tmp);
data.saveAccounts();
}
else
{
exists = true;
}
existsPacket << exists;
client.send(existsPacket);
}
开发者ID:kh901,项目名称:Elements,代码行数:42,代码来源:ServerController.cpp
示例17: getFreeReviewers
void ServerController::getFreeReviewers(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string conference;
std::vector<std::string> reviewerList;
std::vector<std::string> freeList;
packet >> conference;
int confIndex = checkConference(conference);
if (confIndex == -1)
{
return;
}
data.conferences[confIndex].getReviewers(reviewerList);
int maxReviewers = data.conferences[confIndex].getMaxPaperReviewers();
std::cout << "Getting a list of free reviewers for conference " << conference << std::endl;
for (int i = 0; i < (int)reviewerList.size(); i++)
{
int findIndex = checkAccount(reviewerList[i]);
if (findIndex != -1)
{
std::cout << "Displaying Reviewers: " << reviewerList[i] << std::endl;
if (data.accounts[findIndex].checkAllocation(conference, maxReviewers))
{
std::cout << "Pushing" << std::endl;
freeList.push_back(reviewerList[i]);
}
}
}
response << (int)freeList.size();
for (int i = 0; i < (int)freeList.size(); i++)
{
response << freeList[i];
}
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:40,代码来源:ServerController.cpp
示例18: getFinalReview
void ServerController::getFinalReview(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string username, conference, paper;
std::string finalRev;
bool exists = false;
packet >> username >> conference >> paper;
// authenticate request
int accIndex = checkAccount(username);
if (accIndex == -1)
{
return;
}
// authenticate conference
int confIndex = checkConference(conference);
if (confIndex == -1)
{
return;
}
if (data.accounts[accIndex].getAccess(conference))
{
for (int i = 0; i < (int)data.reviews.size(); ++i)
{
if (data.reviews[i].getConference() == conference &&
data.reviews[i].getTitle() == paper &&
data.reviews[i].getFinal())
{
finalRev = data.reviews[i].getReviewID();
exists = true;
break;
}
}
response << exists << finalRev;
}
else
{
response << exists;
}
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:40,代码来源:ServerController.cpp
示例19: sendSubDetail
void ServerController::sendSubDetail(sf::Packet &packet, sf::TcpSocket &client)
{
sf::Packet response;
std::string conf, paperTitle;
packet >> conf >> paperTitle;
int confIndex = checkConference(conf);
if (confIndex == -1)
{
return; // ignore request if conference is not found
}
int subIndex = checkSubmission(paperTitle, conf);
if (subIndex == -1)
{
return; // ignore request if paper is not found
}
Submission result = data.submissions[subIndex];
response << result;
client.send(response);
}
开发者ID:kh901,项目名称:Elements,代码行数:22,代码来源:ServerController.cpp
示例20: Accept
//////////////////////////////////////////////////////////
//======================================================//
// Accept //
//======================================================//
// This will attempt to accept a connection from a //
// tcp socket. //
//////////////////////////////////////////////////////////
bool Connection::Accept(sf::TcpSocket& client_socket)
{
// If we have successfully accepted a connection from the client.
if (connection_listener_.accept(client_socket) == sf::Socket::Done)
{
// Print out the IP address of the connecting client.
std::cout << "Client connected from: " << client_socket.getRemoteAddress() << std::endl;
// We have accepted a connection from this client, notify the server.
return true;
}
// We can modify what the standard response for not connecting with a client is here.
// Without having to go through network connecting code and modifying each if statement to provide a standard response.
// ERROR: Could not accept a connection on the server.
DisplayErrorMessage(kConnectionErrorMessage);
// We have not accepted the connection from this client.
return false;
}
开发者ID:jmottershead94,项目名称:ManicFootball,代码行数:29,代码来源:connection.cpp
注:本文中的sf::TcpSocket类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论