Created
October 8, 2017 02:50
-
-
Save twilight1794/567330a2b8d3de879533afa7b47ce771 to your computer and use it in GitHub Desktop.
Simple TCP/IP msg server/client
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <sys/types.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
#include <netdb.h> | |
void error(char * msg) { | |
perror(msg); | |
exit(0); | |
} | |
int main (int argc, char *argv[]) { | |
int sockfd, portno, n; | |
struct sockaddr_in serv_addr; | |
struct hostent *server; | |
char buffer[256]; | |
if (argc <3) { | |
fprintf(stderr, "el puerto host %s está en uso", argv[0]); | |
exit(0); | |
} | |
portno = atoi(argv[2]); | |
sockfd = socket(AF_INET, SOCK_STREAM, 0); | |
if (sockfd <0) { | |
error("Error de apertura de socket "); | |
} | |
server = gethostbyname(argv[1]); | |
if (server == NULL) { | |
fprintf(stderr, "Error, no hay host"); | |
exit(0); | |
} | |
bzero((char *) &serv_addr, sizeof(serv_addr)); | |
serv_addr.sin_family = AF_INET; | |
bcopy((char *) server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length); | |
serv_addr.sin_port = htons(portno); | |
if (connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0) { | |
error("Error de conexión"); | |
} | |
printf("Por favor, introduzca el mensaje:"); | |
bzero(buffer,256); | |
fgets(buffer,255,stdin); | |
n = write(sockfd,buffer,strlen(buffer)); | |
if (n <0) { | |
error("Error al escribir en socket"); | |
} | |
bzero(buffer,256); | |
n = read(sockfd,buffer,255); | |
if (n <0) { | |
error("Error al leer del socket"); | |
} | |
printf ("%s ",buffer); | |
close(sockfd); | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
import socket | |
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
server.connect(("localhost", 80)) | |
while True: | |
mensaje = raw_input("Mensaje a enviar >> ") | |
server.send(mensaje) | |
if mensaje == "quit": | |
break | |
print "Adios." | |
server.close() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <sys/types.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
void error(const char *msg) { | |
perror(msg); | |
exit(1); | |
} | |
int main (int argc, char *argv[]) { | |
if (argc < 2) { | |
fprintf(stderr, "ArgumentError: The number of parameters must be 2"); | |
exit(1); | |
} | |
int SOCKET, NEWSOCKET; | |
int HTTP_PORT = atoi(argv[1]); | |
char buffer[256]; | |
struct sockaddr_in serv_addr, cli_addr; | |
SOCKET = socket(AF_INET, SOCK_STREAM, 0); | |
if (SOCKET <0) { | |
error ("Error de apertura de socket"); | |
} | |
bzero((char*)&serv_addr,sizeof(serv_addr)); | |
serv_addr.sin_family = AF_INET; | |
serv_addr.sin_port = htons(HTTP_PORT); | |
serv_addr.sin_addr.s_addr = INADDR_ANY; | |
if (bind(SOCKET,(struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { | |
error("Error en la conexión bind()"); | |
} | |
listen(SOCKET,5); | |
int clilen = sizeof(cli_addr); | |
NEWSOCKET = accept(SOCKET,(struct sockaddr*)&cli_addr,&clilen); | |
if (NEWSOCKET <0) { | |
error("Error en accept()"); | |
} | |
bzero(buffer,256); | |
char request = read(NEWSOCKET, buffer, 255); | |
if (request < 0) { | |
error("Error al leer del socket"); | |
} | |
printf("Aquí está el mensaje:% s ", buffer); | |
request = write(NEWSOCKET,"Tengo el mensaje",18); | |
if (request <0) { | |
error("Error al escribir en el socket"); | |
} | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
import socket | |
import os | |
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
server.bind(("localhost", 80)) | |
server.listen(10) | |
#Instanciamos un objeto sc (socket cliente) para recibir datos, al recibir datos este | |
#devolvera tambien un objeto que representa una tupla con los datos de conexion: IP y puerto | |
serverc, addr = server.accept() | |
while True: | |
recvmsg = serverc.recv(1024) | |
if recvmsg == "quit": | |
break | |
print str(addr[0]) + ":" + str(addr[1]) + " dice: ", recvmsg | |
serverc.send(recvmsg) | |
print "Adios." | |
serverc.close() | |
server.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment