Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int accept_client(const char* port, const char* ip) {
- struct addrinfo *socketinfo;
- getaddrinfo(ip, port, NULL, socketinfo);
- // Asumo que el primer resultado es válido
- sock = socket(socketinfo->ai_family, socketinfo->ai_socktype, socketinfo->ai_protocol);
- bind (sock, socketinfo->ai_addr, socketinfo->ai_addrlen);
- freeaddrinfo(socketinfo);
- listen(sock, QUEUE_SIZE);
- client_sock = accept(sock);
- return client_sock;
- }
- int connect_client(const char* port, const char* ip) {
- struct addrinfo *socketinfo;
- getaddrinfo(ip, port, NULL, socketinfo);
- // Asumo que el primer resultado es válido
- sock = socket(socketinfo->ai_family, socketinfo->ai_socktype, socketinfo->ai_protocol);
- connect(sock, socketinfo->ai_addr, socketinfo->ai_addrlen);
- freeaddrinfo(socketinfo);
- return sock;
- }
- int receive_some(int sock, char* buf, size_t len) {
- return (int)recv(sock, buf, len, 0);
- }
- int receive(int sock, char* buf, size_t len) {
- int leidos = 0;
- while (leidos != len) {
- int recibidos = receive_some(sock, buf[leidos], len - leidos);
- if (recibidos == -1) return -1;
- if (recibidos == 0 ) return 0;
- leidos += recibidos;
- }
- return leidos;
- }
- void shutdown_and_close(int sock) {
- shutdown(sock);
- close(sock);
- }
- int main() {
- char buf[11];
- buf [10] = '\0';
- int sock = connect_client(815, NULL);
- int leidos;
- while (true) {
- if (leidos = receive(sock, buf, 10) <= 0) {
- break;
- }
- for (size_t i = 0; i < leidos; i++) {
- if (buf[i] == 0xff)
- break;
- printf("%c", buf[i]);
- }
- }
- shutdown_and_close(sock);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement