Skip to content

Instantly share code, notes, and snippets.

@twilight1794
Created October 8, 2017 02:50
Show Gist options
  • Save twilight1794/567330a2b8d3de879533afa7b47ce771 to your computer and use it in GitHub Desktop.
Save twilight1794/567330a2b8d3de879533afa7b47ce771 to your computer and use it in GitHub Desktop.
Simple TCP/IP msg server/client
#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;
}
#!/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()
#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;
}
#!/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