cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
/ I( `+ L* z7 L9 t; P
#include
) u! ^ D- J* Y' {
#include
8 t7 M b% @4 c% ?/ K" M
#include
8 y% B1 c5 R# y P
#include
/ E% ]1 ^" C( e2 I; V3 t( O" J
#include
7 J/ }' \9 v0 u7 T" f
#include
, }6 r5 a/ n n: ]; b
#include
/ \) o9 @) m% `+ n
#include
复制代码
1 e0 c0 h& L% G( |8 k( A- O
7 L" s3 d4 C+ l, ]
服务器代码如下:
9 r% d' F, `( g& C8 S5 U* D
#include
# h- }) D6 n0 ^
#include
W9 Q* \+ k) v# F( f
#include
3 I3 R; E- @5 I7 F" d' d7 X
#include
/ _- M' W. n4 }: U& N- e
#include
- j3 I) k5 \" [% z1 z
#include
; \* ?% c2 S: ^! I8 p2 f7 ]. }
#include
: ^. D! L" e2 p; I6 Z1 W) H w
#include
复制代码
7 s3 [) W% b/ A5 w7 Q5 c: I
3 M/ `8 E- x2 t1 x
! {% W- U; ]3 G: W1 i% K
$ f8 I# K) y/ u# T# \5 r% Z
$ T7 f! _2 R0 F# ^3 k: s: X
3 o& \% x+ n c& E) }& I
+ v& I5 v( @1 U% s) Y
; \9 t8 y& B2 [% E4 ~9 J- {
0 [$ {8 `( X$ ]& ^/ j
/ x; x" k- P+ E- n. t- B6 h: Y
- n. \( ?& p/ x1 E& |9 q
5 i+ q6 Y3 k8 `' |( }0 @9 c5 H" I k
) t0 Y) W W$ h
% E. ~' y. l" q% ~9 J& A
2 i% L, s$ O8 Z S
X1 L$ @" Z& C0 R; }" a, l
& ^6 \6 x& X5 d+ [' b; B3 B
( s; ^) {: f3 ]8 q8 V5 f9 g
$ E T m0 y/ L. v3 |7 q
' w d! N, [# `1 a3 c
作者:
admin
时间:
2020-5-9 02:30
服务端:
9 T6 M! A/ \9 f/ y: p- x8 m6 R
#include <sys/types.h>
2 V5 |' V3 E9 h8 A1 u) l
#include <sys/socket.h>
5 S) ]( o& ]7 k9 |- s# F4 c& Z; F! Y
#include <unistd.h>
( l% Z: W3 S% ^% o, s$ e6 [* y
#include <netinet/in.h>
^) y: `6 n t( q0 U
#include <arpa/inet.h>
' n' H( r2 v5 c; T
#include <string.h>
! k# s6 M4 k3 D* ?
#include <stdio.h>
: B) z7 {' L5 a- \
int main() {
z2 d2 E& f0 z& M" H7 O, C* w
int sockClient;
( c- c- Q9 g( j' B2 n' \
struct sockaddr_in addrSrv;
4 w: l( j+ O& ? M
sockClient = socket(AF_INET,SOCK_DGRAM,0);
/ |( J L* m, m, K
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
; i! h& D* D" C- s H+ D9 p
addrSrv.sin_family=AF_INET;
% U9 b) z3 ^1 g# @* i
addrSrv.sin_port=htons(6000);
' }; L8 w' T1 ^& n/ K
while(1)
1 f% w; T/ \3 P- i7 u/ b
{
: C! P5 G6 ^, v! T H
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
1 X9 W( y3 g, n8 O) f2 o s1 K
sleep(2);
( V% L3 x) ?. c
}
+ g* {7 N6 v. l8 X- e4 N
close(sockClient);
2 f# Q. Q1 V. v( b5 @
return 0;
1 Z* Z0 u% A1 }1 I$ B1 d! l
}
( @6 k; o! V$ S& \; a
3 @4 _- D3 r' |8 o- |
% L$ \$ K' b9 A9 \$ K$ T) a
客户端:
#include <stdio.h>
* X k1 X- g) |' g
#include <sys/types.h>
3 V8 a5 A/ O: Z: N; [ M
#include <sys/socket.h>
. U. Y8 B' a! v8 t$ N8 g
#include <netinet/in.h>
1 U0 T0 u; c7 Q3 L
#include <arpa/inet.h>
- @$ A8 V0 m% x3 ]/ a
#include <string.h>
. \+ ?- I. k4 f6 {1 L! }0 `
#include <unistd.h>
7 V! Q0 C$ P" ?5 n* ?) p3 J- N
#include <fcntl.h>
2 t0 }: R1 L) `# `
#include <sys/time.h>
! c& H, S. ]5 ^* @+ T
#include <sys/select.h>
& ^: K. L& {" Z b
#include <sys/ioctl.h>
# Z/ q. K& G/ V0 k- a
int main() {
3 O3 \7 I4 C G/ \" \7 Z" \0 _( [
int sockSrv;
9 `. |, H4 Y5 @5 b
struct sockaddr_in addrSrv;
: X( F% m5 P' g/ _9 X
int len;
% J0 m- {) _ S8 h/ r
char recvBuf[100];
( G$ O. e; b! w
scanf("%s",recvBuf);
' ^' { U6 N- ^! H$ r
struct sockaddr_in addrClient;
9 d. q8 ~( I# s" y# Y9 ~8 [+ J; F
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
M$ c0 ^ \+ ?" |2 U+ q6 P
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
" Z& i) T) r3 |$ q! A$ D6 P
addrSrv.sin_family = AF_INET;
: |2 x9 D$ }, |. j" v; f/ D
addrSrv.sin_port = htons(6000);
Q5 |9 J6 C2 b [4 T5 B) D) g7 ?
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
$ O! Q& W, ?2 `: K: m
len = sizeof(struct sockaddr);
" ]) L a' _9 I3 v$ D
memset(recvBuf, 0, 100);
# l" `6 @0 k- N3 i' U
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
4 k7 ]/ Y/ i0 R4 w7 U/ m7 [
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
( h& Z: V7 k( c1 D" N; [
printf("Client data is:%s\n",recvBuf);
; q# }" T6 G6 P
close(sockSrv);
- C1 ^* d. J4 y7 y# ^1 `
return 0;
; H1 T6 u! J3 u8 e
}
复制代码
/ O1 t8 e% I: l: w" ~
" W) T( y4 H/ i8 r
7 {% X2 Q0 h7 w2 C: R/ K
( h# ?; z* k% |! `, O5 V. ~. f
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2