Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //serwer
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<stdio.h>
- #include<netinet/in.h>
- #include<arpa/inet.h>
- #include<unistd.h>
- /* A. Mroz - zad. na SK, do modyfikacji */
- /* bez pelnej obslugi bledow! */
- struct my_msg{
- char name[16];
- char text[255];
- };
- int main() {
- int sockfd;
- u_short my_port;
- struct sockaddr_in server_addr;
- struct my_msg msg;
- /* wybieram "unikalny" numer portu dla serwera */
- my_port = 5000 + (getpid() % 10000);
- /* towrze gniazdo - na razie tylko czesc "protokol" */
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- /* podpinam gniazdo pod konkretny "adres-lokalny"
- i "proces-lokalny" (= port) */
- server_addr.sin_family = AF_INET; /* IPv4 */
- server_addr.sin_addr.s_addr = //inet_addr("158.75.112.121"); //juliusz na sztywno
- htonl(INADDR_ANY); /* dowolny (moj) interfejs */
- server_addr.sin_port = htons(my_port); /* moj port */
- bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
- printf("[Serwer]: Utworzone gniazdo, slucham na porcie: %d\n", my_port);
- while(1) {
- recvfrom(sockfd, &msg, sizeof(msg), 0, NULL, NULL);
- printf("Wiadomosc od %s: %s\n", msg.name, msg.text);
- }
- return 0;
- }
- //klient
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<stdio.h>
- #include<stdlib.h>
- #include<netinet/in.h>
- #include<arpa/inet.h>
- #include<unistd.h>
- #include<string.h>
- /* A. Mroz - zad. na SK, do modyfikacji */
- /* bez pelnej obslugi bledow! */
- struct my_msg{
- char name[16];
- char text[255];
- };
- int main(int argc, char *argv[]) {
- int sockfd;
- struct sockaddr_in client_addr, server_addr;
- struct my_msg msg;
- int bindresult;
- ssize_t bytes;
- /* przygotowanie adresu serwera */
- server_addr.sin_family = AF_INET; /* IPv4 */
- /* 1 argument = adres IP serwera */
- server_addr.sin_addr.s_addr = (inet_addr(argv[1]));
- /* 2 argument = port serwera*/
- server_addr.sin_port = htons((u_short)atoi(argv[2]));
- /* towrze gniazdo - na razie tylko czesc "protokol" */
- sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- /* podpinam gniazdo pod "adres-lokalny"
- i "proces-lokalny" (= port)
- Ten krok mozna pominac (dla sesji bezpolaczenioweji) */
- client_addr.sin_family = AF_INET; /* IPv4 */
- client_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* dowolny interfejs */
- client_addr.sin_port = htons(0); /* dowolny port */
- bindresult = bind(sockfd, (struct sockaddr *)&client_addr, sizeof(client_addr));
- printf("[Klient]: Tworze gniazdo (%s)\n",
- (bindresult == 0)?"OK":"blad tworzenia gniazda");
- printf("[Klient]: Podaj swoj nick:\n> ");
- fgets(msg.name, 16, stdin);
- msg.name[strlen(msg.name)-1] = '\0';
- printf("[Klient]: Podaj wiadomosc do serwera:\n> ");
- fgets(msg.text, 255, stdin);
- msg.text[strlen(msg.text)-1] = '\0';
- printf("[Klient]: wysylam...");
- bytes = sendto(sockfd, &msg, sizeof(msg), 0,
- (struct sockaddr *)&server_addr, sizeof(server_addr));
- printf(" (%s: %zd bajtow)\n", (bytes > 0)?"OK":"cos nie tak!", bytes);
- close(sockfd);
- return 0;
- }
- serwertcp
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<stdio.h>
- #include<netinet/in.h>
- #include<arpa/inet.h>
- #include<unistd.h>
- /* A. Mroz - zadanie na SK, do modyfikacji */
- /* bez pelnej obslugi bledow! */
- #define MY_MSG_SIZE 127
- int main() {
- int sockfd, newsockfd;
- u_short my_port;
- struct sockaddr_in server_addr, client_addr;
- char msg[MY_MSG_SIZE];
- socklen_t clilen;
- int bytes;
- int clientno = 0;
- /* wybieram "unikalny" numer portu dla serwera */
- my_port = 5000 + (getpid() % 10000);
- /* tworze gniazdo i podpinam adres */
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- server_addr.sin_family = AF_INET; /* IPv4 */
- server_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* dowolny (moj) interfejs */
- server_addr.sin_port = htons(my_port); /* moj port */
- bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
- printf("[Serwer]: Utworzone gniazdo TCP, slucham na porcie: %d\n", my_port);
- listen(sockfd, 5);
- while(1) {
- ++clientno;
- clilen = sizeof(client_addr);
- printf("[Serwer]: Czekam na klienta...\n");
- newsockfd = accept(sockfd, (struct sockaddr *)&client_addr, &clilen);
- printf("[Serwer]: Zglosil sie klient nr %d z IP: %s, port: %d\n",
- clientno, inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
- bytes = read(newsockfd, msg, MY_MSG_SIZE);
- msg[bytes] = '\0';
- printf(" Komunikat klienta nr %d: %s\n", clientno, msg);
- close(newsockfd);
- }
- return 0;
- }
- klient tcp
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<stdio.h>
- #include<stdlib.h>
- #include<netinet/in.h>
- #include<arpa/inet.h>
- #include<unistd.h>
- #include<string.h>
- /* A. Mroz - zadanie na SK, do modyfikacji */
- /* bez pelnej obslugi bledow! */
- #define MY_MSG_SIZE 127
- int main(int argc, char *argv[]) {
- int sockfd;
- struct sockaddr_in server_addr;
- char msg[MY_MSG_SIZE];
- int connectresult;
- int bytes;
- /* przygotowanie adresu serwera */
- server_addr.sin_family = AF_INET; /* IPv4 */
- /* 1 argument = adres IP serwera */
- server_addr.sin_addr.s_addr = (inet_addr(argv[1]));
- /* 2 argument = port serwera*/
- server_addr.sin_port = htons((u_short)atoi(argv[2]));
- /* towrze gniazdo - na razie tylko czesc "protokol" */
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- connectresult = connect(sockfd,
- (struct sockaddr *)&server_addr, sizeof(server_addr));
- printf("[Klient]: Lacze z gniazdem TCP (%s)\n",
- (connectresult == 0)?"OK":"blad polaczenia");
- printf("[Klient]: Podaj wiadomosc do serwera:\n> ");
- fgets(msg, MY_MSG_SIZE, stdin);
- msg[strlen(msg)-1] = '\0';
- printf("[Klient]: wysylam...");
- bytes = write(sockfd, msg, strlen(msg));
- printf(" (%s: %zd bajtow)\n", (bytes > 0)?"OK":"cos nie tak!", bytes);
- close(sockfd);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement