32int main(
int argc,
char* argv[]) {
34 std::cout <<
"Usage: " << argv[0] <<
" <server port>" << std::endl;
40 int server_port = atoi(argv[1]);
43 struct sockaddr_in server_addr;
44 server_addr.sin_addr.s_addr = inet_addr(
"127.0.0.1");
45 server_addr.sin_family = AF_INET;
46 server_addr.sin_port = htons((uint16_t)server_port);
48 std::string user_input;
49 std::vector<char> server_reply(2049);
54 session.
Socket(AF_INET, SOCK_STREAM, 0);
55 if (session.
Connect((
struct sockaddr*)&server_addr,
56 sizeof(server_addr)) < 0) {
57 std::cout <<
"connect to server failed, " << strerror(errno)
64 std::cout <<
"please enter a message (enter Ctrl+C to exit):"
66 std::getline(std::cin, user_input);
70 if (user_input.empty()) {
74 if (session.
Send(user_input.c_str(), user_input.length(), 0) < 0) {
75 std::cout <<
"send message failed." << std::endl;
79 while ((nbytes = session.
Recv(server_reply.data(),
80 server_reply.size(), 0)) > 0) {
81 for (
auto itr = server_reply.begin();
82 itr < server_reply.begin() + nbytes; ++itr) {
85 count += (uint32_t)nbytes;
86 if (count >= user_input.length()) {
92 std::cout <<
"server has been closed." << std::endl;
98 std::cout <<
"receive message from server failed." << std::endl;
103 std::cout << std::endl;