c_cpp client.c
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp client.c相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
int main(int argc, char const* argv[])
{
struct sockaddr_in server;
int client_socket;
char buf[32];
int res;
client_socket = socket(AF_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET;
server.sin_port = htons(18081);
server.sin_addr.s_addr = inet_addr("127.0.0.1");
res = connect(client_socket, (struct sockaddr *)&server, sizeof(server));
if (res == -1) {
printf("failed to connect\n");
switch (errno) {
case EBADF:
printf("file descriptor is invalid\n");
break;
case EALREADY:
printf("target socket is already used\n");
break;
case ETIMEDOUT:
printf("timed out\n");
break;
case ECONNREFUSED:
printf("connection refused\n");
break;
default:
printf("unknown\n");
break;
}
return 1;
}
memset(buf, 0, sizeof(buf));
res = read(client_socket, buf, sizeof(buf));
printf("%d, %s\n", res, buf );
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main(int argc, char const* argv[])
{
// AF_INET IPv4を利用することを指定する
// AF_INET6 IPv6を利用することを指定する
int socket_descriptor;
int client_socket;
int res;
struct sockaddr_in addr;
struct sockaddr_in client;
socklen_t client_length;
socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);
if (socket_descriptor == -1) {
printf("failed to create socket\n");
return 1;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(18081);
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_len = sizeof(addr);
res = bind(socket_descriptor, (struct sockaddr *)&addr, sizeof(addr));
if (res == -1) {
printf("failed to bind\n");
return 1;
}
// これからclientの接続要求を待つようにする
res = listen(socket_descriptor, 5);
if (res == -1) {
printf("failed to listen\n");
return 1;
}
// 接続要求を受け付ける状態にする
client_length = sizeof(client);
client_socket = accept(socket_descriptor, (struct sockaddr *)&client, &client_length);
if (client_socket == -1) {
printf("failed to accept client\n");
return 1;
}
write(client_socket, "Hello, world!", 13);
close(client_socket);
close(socket_descriptor);
return 0;
}
/**
* socket関数がsocket descriptorを返す
* socket descriptorを特定のportにbindする
* その次どうするかな
*
*
*/
以上是关于c_cpp client.c的主要内容,如果未能解决你的问题,请参考以下文章