cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
u& D9 K/ f2 S% B
#include
2 P9 }1 \" [: Z% g: z, I5 Z! u/ `
#include
) }. p7 ^5 G4 A/ n
#include
, t$ s3 I: _8 c& A& e+ d" i# G% n
#include
: G6 M2 j" v( x# x* V) Q' d0 x
#include
5 Y7 ~, h) d$ Z# u
#include
8 e* v/ z) `! D6 w1 q3 \8 \
#include
; {4 W* G5 v$ _' D1 O
#include
复制代码
+ ^5 `. B- J( o' s2 i
3 e, \: K/ v* T3 N3 q
服务器代码如下:
: v9 H9 [9 }4 {& B4 e
#include
6 K! C2 H% G* `0 t( w" m
#include
J9 t) x/ i. p7 }
#include
1 i. q! u2 m: j; w r
#include
) Y) Z; d/ m- F3 M7 W" |7 W
#include
$ y& F8 B: B. k4 b( ~& ^' b( Q/ z
#include
+ [' @0 u- K. e$ W; k5 K g
#include
" G& G, _& m7 S: b8 f* \1 b9 p$ j' Q
#include
复制代码
5 |! L' h. H; B; F2 |
4 e2 r0 p0 ~7 C' o. C! C
9 f+ X$ S' U2 w
3 o. {- t" T3 ^+ c2 x! B
5 G! l& N" E- W- j" s; x4 p
$ q6 P5 Z3 S8 }) e' e9 e
# @5 _! M" @# Q4 w
- t4 |5 U, \$ Q% M4 J
( _5 c0 d8 i& ~3 ^$ S* j5 P3 }* M
, }. P' O. x' a8 }1 `
9 z, A9 b* O6 n4 [
6 @& j$ r8 j. V6 B( a* h
u# q% m3 U( n9 Y% @9 o
8 X+ Z2 M/ h& G
* ]. u# R9 N8 ~9 S' e# c5 M
- r5 j# D$ x* z1 y* x g& `
( l3 \9 L) q% C0 J$ V
; K; R, f6 K. q( ]2 W
2 t' L0 v, A8 u, y% q ~
& T" Z4 G* }$ p: |
作者:
admin
时间:
2020-5-9 02:30
服务端:
6 i7 Q' t6 x! t3 {$ _4 |3 x! Y
#include <sys/types.h>
2 ~/ `# v# q8 p& M/ h
#include <sys/socket.h>
! N# M0 a; J4 G: M
#include <unistd.h>
# ~ z3 \0 }1 D% g
#include <netinet/in.h>
* {4 b8 J% k& |
#include <arpa/inet.h>
! D1 M2 q2 ]3 E9 D( H
#include <string.h>
# V2 J0 Z; G1 E8 B$ D
#include <stdio.h>
# ]9 L0 K* j/ _' K& Q5 s
int main() {
' _3 {8 T- z* b+ d
int sockClient;
, A3 \& U; A: i) n! I# V
struct sockaddr_in addrSrv;
- R) }' w: [% R. y" A3 S4 a
sockClient = socket(AF_INET,SOCK_DGRAM,0);
2 g; k3 \# H: i% j0 u1 ]3 }
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
# a) J* Y4 K2 k3 `/ q; h
addrSrv.sin_family=AF_INET;
6 K: _& ?: O2 l* p! x" F
addrSrv.sin_port=htons(6000);
P- P3 ]* w+ P- W; I% i+ R
while(1)
# S$ p' F! [$ m0 V. d
{
* s" t# T. V4 u& X/ { C
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
( ]/ k: V v9 f* w
sleep(2);
$ u; ?$ S7 g5 ~% \! z) b
}
4 D# `8 k, B( _/ g9 y% y7 X
close(sockClient);
2 z7 ?/ h5 F# R
return 0;
F$ O# a. \8 ~( }+ m7 f9 O
}
5 U$ U' `0 f& f$ v6 q/ u
" g. [2 N# p5 v9 f* o- ~
! {- H/ X& |4 L i
客户端:
#include <stdio.h>
& N1 }1 N4 r: [: a5 s
#include <sys/types.h>
2 t% q0 ^* a. ^8 d9 @, Q) `
#include <sys/socket.h>
: @3 y+ C# E8 Q: X# Q
#include <netinet/in.h>
; I6 [2 ^& [' }0 w; z
#include <arpa/inet.h>
9 Q0 T& b$ {) K( U4 i6 Z3 e
#include <string.h>
9 }) B* u/ p# J5 E" y, |9 o5 v
#include <unistd.h>
2 B A% m' @2 n, S' c
#include <fcntl.h>
- D* a' E/ P9 b
#include <sys/time.h>
* R! `7 P9 q4 g/ L; }
#include <sys/select.h>
# g- f0 }5 c) Z4 m/ n
#include <sys/ioctl.h>
" T6 N8 q: s: l/ Z! @9 d' I
int main() {
5 f8 k7 B0 j# K0 B1 n9 L X) M
int sockSrv;
, M( Z5 {& t& s3 h3 N O
struct sockaddr_in addrSrv;
8 A2 l- U$ Q7 p& b% _
int len;
# l1 {3 f3 U1 h' o
char recvBuf[100];
* I5 D3 ]3 T3 x" N* H1 A& N
scanf("%s",recvBuf);
) C) C% F( K6 h, ^
struct sockaddr_in addrClient;
3 ]; ? ^, g4 ], e8 M1 u1 Z& t2 i& _
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
8 _ N: P5 N& `% I
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
0 T3 `0 V2 k5 {. ?
addrSrv.sin_family = AF_INET;
5 w) S3 d4 s- S" M) o
addrSrv.sin_port = htons(6000);
( S. N0 j* a0 }% I7 L6 P4 \
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
- I) m$ c) e/ Q% E1 ^
len = sizeof(struct sockaddr);
/ A% J3 w* {' {- Y ]8 c$ w
memset(recvBuf, 0, 100);
g3 k# J9 ?4 c4 S4 E
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
4 [2 u8 P# }9 T: L: n
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
% ?, D5 v" `& @
printf("Client data is:%s\n",recvBuf);
. ~- P/ ? E' e9 m
close(sockSrv);
) C& ]/ }; _8 h/ E
return 0;
: R1 i# ^/ [4 A
}
复制代码
S. _( I! j! ?4 k1 _6 [+ a: {
9 Y! w: c' p" C) E
4 s* }+ c9 `" |! T' Y( @
, g9 d c6 A9 B- {5 r; H `
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2