cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
2 c6 U3 T2 E, d d' H
#include
; F3 H3 k8 F+ g. G$ ^
#include
6 ^+ S- _2 k& t% z3 u
#include
7 h( {7 ]5 g# S U
#include
( l7 w* I, g% ~% ^- q& B- `
#include
$ X0 S! B! _" V+ j% D- Y3 s* p
#include
0 p- z" k/ s, k+ b- q
#include
- u8 M9 ^! w" F6 g7 y7 [
#include
复制代码
& i% i% u6 j. a6 I! o* I! J$ r
# m# V3 b. e: V
服务器代码如下:
7 F1 q4 p( n2 Z* ~7 p. S8 z
#include
7 j* C6 V; h6 ]" y+ s
#include
& p- R* C% o, S& V- H/ J1 A( f
#include
( P. l! j* O% L# h; Y9 d
#include
2 N! l/ @. ~! V6 ~" e
#include
4 g# y- \' W& p& K6 b) A
#include
$ `3 N! N5 m6 U$ F& K
#include
2 R0 J, k2 g. o1 s- e
#include
复制代码
I$ X& i/ Q! n$ p* H& e
; |& O& I( s$ a: T
1 |9 u; s, q* D! ^+ u
. g7 A: L+ s6 W5 l+ o6 P1 U6 t
2 p$ ^1 S+ H+ ?; }8 Z
* Z2 x# F+ k) W' S/ X. @8 c
4 A2 j+ ~" T. q% P
# M4 x. m' Q4 [& u/ v
+ @% d6 y# S# y, s0 O7 @" h5 `$ i
8 n" X- {% o& r" [
3 w3 U8 {& C5 s5 { ~, |: ^
8 D; y C" z$ g: w# p0 p9 m
8 S+ s# d3 H7 o0 V( u C: J
/ X. q, y& J" f! h/ ^' g
' f( ~. p6 d; e, V
- G- c, Q }+ t/ W# ~0 E9 T/ Q* b
! | h$ S5 r V) S: g3 b1 @
, W8 F) V0 c% F
& D- w- s2 B( a$ D4 P
" y2 u+ j* r# C7 f' b G' {
作者:
admin
时间:
2020-5-9 02:30
服务端:
5 F- o( B' \5 t
#include <sys/types.h>
5 Y$ C4 f$ `7 V( ^( ~/ x3 z
#include <sys/socket.h>
, s' l7 j/ p; g3 ~$ s) B
#include <unistd.h>
$ x! ?$ n1 p% [* [7 F' l: [; s
#include <netinet/in.h>
9 m0 ~4 _* R i
#include <arpa/inet.h>
+ w2 Q0 t2 c) @" w# l2 `
#include <string.h>
9 C% [9 \% s4 o6 R& H( H3 u
#include <stdio.h>
2 x; D0 o; I6 i
int main() {
7 n3 A: a( @( f' Z+ V3 H" O) B# r
int sockClient;
( n/ M1 @: k+ e. V9 ?
struct sockaddr_in addrSrv;
9 @! o4 ~" ~/ o
sockClient = socket(AF_INET,SOCK_DGRAM,0);
$ c7 W; ?. U$ a6 S2 i
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
8 m; J1 B4 z6 W: U" M! V# a
addrSrv.sin_family=AF_INET;
n- z; E- Z% _" \+ L) ^
addrSrv.sin_port=htons(6000);
]" `6 i3 d2 e% K7 O; f
while(1)
/ c* j/ S( I5 {8 S- t
{
" Q) J; f8 R1 ~9 o6 |
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
: a2 S$ \8 P3 Q% r+ O# H
sleep(2);
+ l; {; w( D1 z$ g5 v1 O" Y5 p
}
) @8 U" v7 Z7 }
close(sockClient);
9 ?5 {' O3 B5 z+ d% b
return 0;
# _, S, N4 x0 D
}
) s$ i. p( F$ h# N. ~% I
r$ o- x' |* h. G8 s* {
) s4 R' R7 C+ Q+ @. v; d0 G
客户端:
#include <stdio.h>
# D% C1 Y2 B0 J) f' g
#include <sys/types.h>
& c- b% ` K9 ] t7 W
#include <sys/socket.h>
) Q/ }6 j6 g0 G3 f6 P+ `
#include <netinet/in.h>
' [( D! a% N# [. @
#include <arpa/inet.h>
u3 T; U/ J+ `1 E. x9 m: j; _6 r
#include <string.h>
% Q7 B" @: i) B7 R/ ?; u
#include <unistd.h>
2 U/ R! C5 i1 d; N! N
#include <fcntl.h>
9 `& ?* b: F3 n- @" ~% d G
#include <sys/time.h>
' l9 p2 R& G& @; n
#include <sys/select.h>
3 R+ q9 ?4 f1 L
#include <sys/ioctl.h>
( L3 W+ u, l; R3 L7 n) C) s
int main() {
5 `4 W) m' m7 \. s. f- Z
int sockSrv;
( m4 W' r1 [" ^( F+ P
struct sockaddr_in addrSrv;
. Y$ l/ q: W6 k( O" T8 I
int len;
3 o# y+ S: K/ [7 W1 w9 A) C( f
char recvBuf[100];
! P+ ]; D7 Q8 j8 ` C& c9 a) h) \( o
scanf("%s",recvBuf);
9 L i j8 N2 L; F- Z
struct sockaddr_in addrClient;
& A, X3 u6 \9 d7 K- s0 T
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
: i7 j+ Y) @1 `8 _" Y* h; t( ?
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
[6 _ c6 [. c. ]
addrSrv.sin_family = AF_INET;
( m X8 N- ^ |- ]0 y; ^
addrSrv.sin_port = htons(6000);
; L( @9 r2 x- z: `" c
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
+ N% J6 f/ I( r# Z m
len = sizeof(struct sockaddr);
& U9 _( \( [+ Q* V. o
memset(recvBuf, 0, 100);
2 {& S# i/ ]! W; d/ x! h$ z5 n) k
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
, X( l7 ~6 t% f+ W) m1 F
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
/ ]( s5 G! N0 s4 T
printf("Client data is:%s\n",recvBuf);
$ T* f/ ~4 K4 B
close(sockSrv);
9 v8 U* D5 G; r7 e, \- g
return 0;
+ W; [, E- }& D' R* t, Z' }
}
复制代码
7 j6 Z* G) \- L- J. u1 @/ ?7 a
. y+ H6 H2 C) q, V' P
% B! ?) z6 S# D, @
( c- x0 K- n: n" _ a
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2