cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
7 ^1 a( o" [/ P
#include
: j! W, y, x# [) I4 P" }
#include
+ R3 a& m" g, F/ j* F3 u+ X( j$ Y
#include
, E( [) t4 `$ J( |/ v* Q/ a: u" l
#include
; e. D; h: s9 `: n% b0 h
#include
7 T- o& [0 r2 Y2 }. ]
#include
; A: [* G# J' L& a. Q& X5 ?
#include
8 d( i" @6 ^/ X1 C) R5 l! ], ^% t
#include
复制代码
+ z+ `; }( o1 S2 b( ^( @
2 P0 z" D4 ` T- s U, y. r7 u" |
服务器代码如下:
8 u8 ]4 v" o. ?! T* J n! d
#include
3 K/ R3 c- x6 f
#include
" d" X0 u: ?5 }8 }1 f2 z3 r5 s7 V( Y
#include
! A) [1 n/ f4 c9 i, k- g% H
#include
& R u8 B+ D# t3 ?
#include
, s% {$ T" E3 |8 N4 d$ U
#include
$ d P* X) i) p$ X* V& d
#include
# \1 L4 T& |* g# G
#include
复制代码
2 J5 Y& C/ L0 |& @4 f6 T
. w% s! c# j' t5 v7 P
# k' Z' y# e! a6 c) ^
5 a. a8 `' U1 Y) S8 i4 S
* w% f5 J. E* U( k5 |- j
# L- q$ K- _1 z! ~2 Y
; A# h9 g ^# C5 U( s. @. l# z' o
& W( r( M- j' b$ v
7 N) s. ]" y( ^1 r
3 |0 g8 n6 Z; c) u: R
' e$ E5 D2 X Q; E5 w
9 z7 d3 `1 J$ Y& W/ i8 \
. n e. J# b' u3 ^, q' X9 d% b
~5 M' X: c2 }+ g: k
6 K" F/ w m" p0 M6 ~- ^! x# {
7 h( t6 I {: b1 {; u9 W
3 `* {. X" Z) @ b( @6 {1 R
9 `; [9 C1 G! ^/ H. Z, ]
4 S7 R' @0 Z3 X" p. g' W+ k
, B& O J& m" ], M. X
作者:
admin
时间:
2020-5-9 02:30
服务端:
" R0 |7 q0 j; y. C% `' @
#include <sys/types.h>
2 O w, G( W" E( @8 ~
#include <sys/socket.h>
6 h+ U! P1 c- c+ K% A; {
#include <unistd.h>
) J) Y: \& X; e' V ~' \0 Y
#include <netinet/in.h>
0 S8 J! b& Q8 R/ Z7 P5 m& L
#include <arpa/inet.h>
5 v1 H% w6 g- C5 v; Y4 n
#include <string.h>
1 m3 a. c5 x2 B+ {, E3 N* S4 x) y
#include <stdio.h>
( n, K# E0 C8 F% y' ~5 j+ `( m
int main() {
# y, W2 k% q* A# `) W t0 l9 P5 X/ C
int sockClient;
& y% \( s$ G. q4 a4 o
struct sockaddr_in addrSrv;
/ ?' [' r( l% M
sockClient = socket(AF_INET,SOCK_DGRAM,0);
# m9 S; S& ^3 {4 _% o
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
5 Z4 S( D$ _: l; L( Z8 g
addrSrv.sin_family=AF_INET;
, @, k; A4 f. k4 K! Y$ ^0 P
addrSrv.sin_port=htons(6000);
( U J J6 b- E @
while(1)
- x# D. U0 F X: ^8 F; V: b
{
! J O5 ^5 m' i% ]
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
. m' F0 m( l5 A1 W
sleep(2);
8 @2 b7 p- k3 R( U
}
! f4 @6 b8 m) O8 ^9 h$ R3 u
close(sockClient);
2 O- J) ?/ O, X# c
return 0;
0 W! a! ~. N! P& K( x
}
6 }! b! O3 {. m7 U3 S! j
9 M: \5 C2 Y1 v+ T1 B3 M; W
6 `' w& i( H, K {' l! \2 K
客户端:
#include <stdio.h>
, j7 i& b* F5 @+ L4 A
#include <sys/types.h>
0 ~% D/ `/ G. o* p" I9 K
#include <sys/socket.h>
! e/ e1 [9 t* s: k, d3 C
#include <netinet/in.h>
% l9 Q& r! f. h0 h5 o
#include <arpa/inet.h>
- |5 y' O! z# H
#include <string.h>
' b7 _3 o0 \* Y* ]: p! J
#include <unistd.h>
& W) n, X0 i4 }# S1 b
#include <fcntl.h>
: d6 \4 P, G4 E+ e5 e- P% ]" U
#include <sys/time.h>
. B* Z. X7 n% r+ n" f7 D1 J
#include <sys/select.h>
6 Z& \, b% k# @5 _
#include <sys/ioctl.h>
* V+ N7 J1 s( V) y, O
int main() {
2 U. \3 G Q- Q9 R8 T2 L7 |7 u
int sockSrv;
. x5 D, Y5 [4 h1 x p# E
struct sockaddr_in addrSrv;
$ a9 x9 y& z& N
int len;
1 X) [# Z7 \- u) s/ |2 M& ~
char recvBuf[100];
6 b3 z8 [5 _, n% }) h2 e
scanf("%s",recvBuf);
$ G, R/ t) n4 s
struct sockaddr_in addrClient;
3 ]+ W4 u; P) [9 @& Q
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
( P! e$ u2 f) F5 b+ Y& e: k" W1 D
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
3 y1 ?0 ^" k* t9 b6 K& ?
addrSrv.sin_family = AF_INET;
2 y$ u3 b- H& G. L& U3 r9 Z/ g
addrSrv.sin_port = htons(6000);
; W2 d. o7 I5 b6 j4 @' u, \
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
! Q9 T: ?, w* n7 q, K" V# G
len = sizeof(struct sockaddr);
) v+ f R; i2 c) F3 ^
memset(recvBuf, 0, 100);
; V U7 Y7 q! f9 j' c- C
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
( j: F f5 g3 S- y ^5 w* q$ i
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
; t7 O8 s3 p' q8 k V
printf("Client data is:%s\n",recvBuf);
/ _, r1 U! N- h
close(sockSrv);
7 U* F; ~) j! E4 b2 \1 c3 S
return 0;
' T& S" _8 w. y0 z
}
复制代码
6 f+ Y( V& z0 I
! _& P: x, k7 u/ F" d4 u3 T
3 R+ F$ Z% m& y' O
( {0 ^8 }( U0 b" C7 P! A# c
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2