gcc server.c -o server
gcc client.c -o client
sh -c './server & ./client'
#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <arpa/inet.h>
#define MAX 80
#define PORT 8080
#define SA struct sockaddr
// Function designed for chat between client and server.
void func(int connfd)
{
char buff[MAX];
int n;
// infinite loop for chat
for (;;) {
bzero(buff, MAX);
// read the message from client and copy it in buffer
read(connfd, buff, sizeof(buff));
// print buffer which contains the client contents
printf("Server.c: From client - %s\t To client : ", buff);
bzero(buff, MAX);
n = 0;
// copy server message in the buffer
while ((buff[n++] = getchar()) != '\n')
;
// and send that buffer to client
write(connfd, buff, sizeof(buff));
// if msg contains "Exit" then server exit and chat ended.
if (strncmp("exit", buff, 4) == 0) {
printf("Server.c: Server Exit...\n");
break;
}
}
}
// Driver function
int main()
{
int sockfd, connfd, len;
struct sockaddr_in servaddr, cli;
// socket create and verification
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
printf("Server.c: socket creation failed...\n");
exit(0);
}
else
printf("Server.c: Socket successfully created..\n");
bzero(&servaddr, sizeof(servaddr));
// assign IP, PORT
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
// Binding newly created socket to given IP and verification
if ((bind(sockfd, (SA*)&servaddr, sizeof(servaddr))) != 0) {
printf("Server.c: socket bind failed...\n");
exit(0);
}
else
printf("Server.c: Socket successfully binded..\n");
// Now server is ready to listen and verification
if ((listen(sockfd, 5)) != 0) {
printf("Server.c: Listen failed...\n");
exit(0);
}
else
printf("Server.c: Server listening..\n");
len = sizeof(cli);
// Accept the data packet from client and verification
connfd = accept(sockfd, (SA*)&cli, &len);
if (connfd < 0) {
printf("Server.c: server accept failed...\n");
exit(0);
}
else
printf("Server.c: server accept the client...\n");
// Function for chatting between client and server
func(connfd);
// After chatting close the socket
close(sockfd);
}
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define MAX 80
#define PORT 8080
#define SA struct sockaddr
void func(int sockfd)
{
sleep(2);
char buff[MAX];
int n;
for (;;) {
bzero(buff, sizeof(buff));
printf("Client.c: Enter the string : ");
n = 0;
while ((buff[n++] = getchar()) != '\n')
;
write(sockfd, buff, sizeof(buff));
bzero(buff, sizeof(buff));
read(sockfd, buff, sizeof(buff));
printf("Client.c: from Server - %s", buff);
if ((strncmp(buff, "exit", 4)) == 0) {
printf("Client.c: Client Exit...\n");
break;
}
}
}
int main()
{
int sockfd, connfd;
struct sockaddr_in servaddr, cli;
// socket create and verification
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
printf("Client.c: socket creation failed...\n");
exit(0);
}
else
printf("Client.c: Socket successfully created..\n");
bzero(&servaddr, sizeof(servaddr));
// assign IP, PORT
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
servaddr.sin_port = htons(PORT);
// connect the client socket to server socket
if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) != 0) {
printf("Client.c: connection with the server failed...\n");
exit(0);
}
else
printf("Client.c: connected to the server..\n");
// function for chat
func(sockfd);
// close the socket
close(sockfd);
}
ELF> @<@8
@@@@ØØ8 8
èèH-H=H=ÈÐX-X=X=ðð888 XXXDDSåtd888 Påtdp!p!p!LLQåtdRåtdH-H=H=¸¸/lib64/ld-linux-x86-64.so.2GNUÀGNU:mìKSþì!3Ô×én13ÎGNUÑeÎm#« +0Ha\}OÇ AWgÖ n"libc.so.6socketexithtonlhtonsstrncmpputs__stack_chk_faillistenprintfgetcharbindreadcloseaccept__cxa_finalize__libc_start_mainwriteGLIBC_2.4GLIBC_2.2.5_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTableii
ui H=P=À@@Ø?à?è?
ð?ø?`?h?p?x????? ?
¨?°?¸?À?È?Ð?óúHìHÙ/H
ÀtÿÐHÄÃÿ5*/òÿ%+/óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòéÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh
òéAÿÿÿóúhòé1ÿÿÿóúhòé!ÿÿÿóúh
òéÿÿÿóúhòéÿÿÿóúòÿ%Í.Dóúòÿ%%.Dóúòÿ%.Dóúòÿ%.Dóúòÿ%
.Dóúòÿ%.Dóúòÿ%ý-Dóúòÿ%õ-Dóúòÿ%í-Dóúòÿ%å-Dóúòÿ%Ý-Dóúòÿ%Õ-Dóúòÿ%Í-Dóúòÿ%Å-Dóúòÿ%½-Dóúòÿ%µ-Dóú1íIÑ^HâHäðPTL6H
¿H=7ÿ-ôH=¹-H²-H9øtHn-H
Àt ÿàÃH=-H5-H)þHðHÁî?HÁøHÆHÑþtHE-H
ÀtÿàfDÃóú=E-u+UH="-HåtH=&-è9þÿÿèdÿÿÿÆ-]ÃÃóúéwÿÿÿóúUHåHÄ}dH%(HEø1ÀHE HÇHÇ@HÇ@HÇ@HÇ@ HÇ@(HÇ@0HÇ@8HÇ@@HÇ@HHM EºPHÎÇè þÿÿHE HÆH=j¸èØýÿÿHE HÇHÇ@HÇ@HÇ@HÇ@ HÇ@(HÇ@0HÇ@8HÇ@@HÇ@HÇEè¸ýÿÿÁEPUHcÐL H¶D <
uÞHM EºPHÎÇèýÿÿHE ºHÆH=ãèÝüÿÿ
À
ÌþÿÿH=ÔèÙüÿÿHEødH3%(tèãüÿÿÉÃóúUHåHì@dH%(HEø1Àº¾¿èbýÿÿEÈ}ÈÿuH=è}üÿÿ¿è3ýÿÿH=¤ègüÿÿHEÐHÇHÇ@fÇEпèüÿÿEÔ¿ègüÿÿfEÒHMÐEȺHÎÇè½üÿÿ
ÀtH=rè
üÿÿ¿èÃüÿÿH=|è÷ûÿÿEȾÇèxüÿÿ
ÀtH=èØûÿÿ¿èüÿÿH=èÂûÿÿÇEÄHUÄHMàEÈHÎÇèVüÿÿEÌ}ÌyH=vèûÿÿ¿èGüÿÿH=è{ûÿÿEÌÇè:ýÿÿEÈÇèÇûÿÿ¸HMødH3%(tènûÿÿÉÃf.fóúAWL=;'AVIÖAUIõATAüUH-,'SL)ýHìèÏùÿÿHÁýt1ÛLòLîDçAÿßHÃH9ÝuêHÄ[]A\A]A^A_Ãff.óúÃóúHìHÄÃServer.c: From client - %s To client : exitServer.c: Server Exit...Server.c: socket creation failed...Server.c: Socket successfully created..Server.c: socket bind failed...Server.c: Socket successfully binded..Server.c: Listen failed...Server.c: Server listening..Server.c: server accept failed...Server.c: server accept the client...;L°îÿÿ°ïÿÿ¨ÀïÿÿÀ°ðÿÿhñÿÿØóÿÿøôÿÿõÿÿ`zRx@ðÿÿ/D$4(îÿÿFJw?:*3$"\ïÿÿtøîÿÿð¹ðÿÿvEC
m¬òÿÿuEC
lDÌpóÿÿeFIE E(D0H8G@n8A0A(B BBBóÿÿÀ
xH=P=õþÿo ÀÈ
ðH?hÐÀ ûÿÿoþÿÿoàÿÿÿoðÿÿo°ùÿÿoX=0@P`p °ÀÐàð@GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.08X| ÈÀ° à
Ð
0 x p!À!H=P=X=H?@@ñÿP!À7@FP=myH=ñÿñÿ¡ä"ñÿ¯P=ÀX=ÉH=Üp!ïH?hp* @FXk@xr¡µÈÛí@. =@J Y v^en»@ /@u¥¹Ë@× ñ"
crtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.8060__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entryserver.c__FRAME_END____init_array_end_DYNAMIC__init_array_start__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___libc_csu_finistrncmp@@GLIBC_2.2.5_ITM_deregisterTMCloneTableputs@@GLIBC_2.2.5write@@GLIBC_2.2.5_edata__stack_chk_fail@@GLIBC_2.4htons@@GLIBC_2.2.5printf@@GLIBC_2.2.5htonl@@GLIBC_2.2.5close@@GLIBC_2.2.5read@@GLIBC_2.2.5__libc_start_main@@GLIBC_2.2.5__data_startgetchar@@GLIBC_2.2.5__gmon_start____dso_handle_IO_stdin_usedfunc__libc_csu_initlisten@@GLIBC_2.2.5__bss_startmainbind@@GLIBC_2.2.5accept@@GLIBC_2.2.5exit@@GLIBC_2.2.5__TMC_END___ITM_registerTMCloneTable__cxa_finalize@@GLIBC_2.2.5socket@@GLIBC_2.2.5.symtab.strtab.shstrtab.interp.note.gnu.property.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.data.bss.comment#88 6XX$I|| Wöÿÿo $aÈÈøiÀÀðqÿÿÿo°°*~þÿÿoàà0ÀBÐÐh¡ § °00ð¹ U¿xx
Å nÍp!p!LÛÀ!À!(åH=H-ñP=P-ýX=X-ð«H?H/¸@0@000*@0. À7!á:
ELF>@Ø;@8
@@@@ØØ P-P=P=ÀÈ`-`=`=ðð888 XXXDDSåtd888 Påtd!!!LLQåtdRåtdP-P=P=°°/lib64/ld-linux-x86-64.so.2GNUÀGNU'<¡-×¢FE·:gi¢^ÇGNUÑeÎmª -2CaR|WJÆ %Õ gm"libc.so.6socketexithtonsstrncmpconnectputs__stack_chk_failprintfgetcharreadinet_addrclosesleep__cxa_finalize__libc_start_mainwriteGLIBC_2.4GLIBC_2.2.5_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTableii
ui P=àX= @@Ø?à?
è?
ð?ø?h?p?x????? ? ¨?°?¸?À?È?Ð?óúHìHÙ/H
ÀtÿÐHÄÃÿ52/òÿ%3/óúhòéáÿÿÿóúhòéÑÿÿÿóúhòéÁÿÿÿóúhòé±ÿÿÿóúhòé¡ÿÿÿóúhòéÿÿÿóúhòéÿÿÿóúhòéqÿÿÿóúhòéaÿÿÿóúh òéQÿÿÿóúh
òéAÿÿÿóúhòé1ÿÿÿóúhòé!ÿÿÿóúh
òéÿÿÿóúòÿ%Ý.Dóúòÿ%=.Dóúòÿ%5.Dóúòÿ%-.Dóúòÿ%%.Dóúòÿ%.Dóúòÿ%.Dóúòÿ%
.Dóúòÿ%.Dóúòÿ%ý-Dóúòÿ%õ-Dóúòÿ%í-Dóúòÿ%å-Dóúòÿ%Ý-Dóúòÿ%Õ-Dóú1íIÑ^HâHäðPTLÖH
_H=Rÿ²-ôH=Ù-HÒ-H9øtH-H
Àt ÿàÃH=©-H5¢-H)þHðHÁî?HÁøHÆHÑþtHe-H
ÀtÿàfDÃóú=e-u+UH=B-HåtH=F-èIþÿÿèdÿÿÿÆ=-]ÃÃóúéwÿÿÿóúUHåHÄ}dH%(HEø1À¿èÏþÿÿHE HÇHÇ@HÇ@HÇ@HÇ@ HÇ@(HÇ@0HÇ@8HÇ@@HÇ@HH=¸èûýÿÿÇEè.þÿÿÁEPUHcÐL H¶D <
uÞHM EºPHÎÇèýÿÿHE HÇHÇ@HÇ@HÇ@HÇ@ HÇ@(HÇ@0HÇ@8HÇ@@HÇ@HHM EºPHÎÇèrýÿÿHE HÆH=ú¸è:ýÿÿHE ºH5ûHÇèÒüÿÿ
À
»þÿÿH=éèÎüÿÿHEødH3%(tèØüÿÿÉÃóúUHåHì0dH%(HEø1Àº¾¿èGýÿÿEÜ}ÜÿuH=§èrüÿÿ¿èøüÿÿH=¹è\üÿÿHEàHÇHÇ@fÇEàH=¼è§üÿÿEä¿èZüÿÿfEâHMàEܺHÎÇè°üÿÿ
ÀtH=èüÿÿ¿èüÿÿH=¯èêûÿÿEÜÇèýÿÿEÜÇè&üÿÿ¸HUødH3%(tèÝûÿÿÉÃf.óúAWL=Ã'AVIÖAUIõATAüUH-´'SL)ýHìèOúÿÿHÁýt1ÛLòLîDçAÿßHÃH9ÝuêHÄ[]A\A]A^A_Ãff.óúÃóúHìHÄÃClient.c: Enter the string : Client.c: from Server - %sexitClient.c: Client Exit...Client.c: socket creation failed...Client.c: Socket successfully created..127.0.0.1Client.c: connection with the server failed...Client.c: connected to the server..;Hïÿÿ|üïÿÿ¤ðÿÿ¼ìðÿÿdÕñÿÿÔfóÿÿôlôÿÿÜôÿÿ\zRxðÿÿ/D$4îÿÿðFJw?:*3$"\PïÿÿtHïÿÿàùðÿÿEC
¬jòÿÿûEC
òDÌPóÿÿeFIE E(D0H8G@n8A0A(B BBBxóÿÿà
øP=X=õþÿo ¨È
ïP?P°ðÀ ûÿÿoþÿÿoÀÿÿÿoðÿÿoùÿÿo`=0@P`p °ÀÐàð@GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.08X| Ȩ À
ð°
ø !`!P=X=`=P?@@ñÿ0`! 7@FX=màyP=ñÿñÿ¡"ñÿ¯X=À`=ÉP=Ü!ïP?lð* û @FXk@ør¡µÈÚù@2 A@N ]ébe»@ÿ/r@~zûª@¶ Ðã"ÿcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.8060__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entryclient.c__FRAME_END____init_array_end_DYNAMIC__init_array_start__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___libc_csu_finistrncmp@@GLIBC_2.2.5_ITM_deregisterTMCloneTableputs@@GLIBC_2.2.5write@@GLIBC_2.2.5_edata__stack_chk_fail@@GLIBC_2.4htons@@GLIBC_2.2.5printf@@GLIBC_2.2.5close@@GLIBC_2.2.5read@@GLIBC_2.2.5__libc_start_main@@GLIBC_2.2.5__data_startinet_addr@@GLIBC_2.2.5getchar@@GLIBC_2.2.5__gmon_start____dso_handle_IO_stdin_usedfunc__libc_csu_init__bss_startmainexit@@GLIBC_2.2.5connect@@GLIBC_2.2.5__TMC_END___ITM_registerTMCloneTablesleep@@GLIBC_2.2.5__cxa_finalize@@GLIBC_2.2.5socket@@GLIBC_2.2.5.symtab.strtab.shstrtab.interp.note.gnu.property.note.gnu.build-id.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.data.bss.comment#88 6XX$I|| Wöÿÿo $aÈÈài¨¨ïqÿÿÿo(~þÿÿoÀÀ0ððÀB°°P¡ 𧰠à¹õ¿øø
Å Í!!LÛ`!`!(åP=P-ñX=X-ý`=`-ð«P?P/°@0@000*@0h. ¨7»: