cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
# t- O" t: ~/ G* q$ n
#include
& ]) e3 }. z+ f X; W5 e0 `. E
#include
, ?" a7 i4 v4 R9 e
#include
: ~3 T G" \5 R0 }, p) ]; ?; o
#include
& Y, z+ {3 `( f2 X
#include
5 z. e% g2 n4 o. F( T
#include
. O1 T1 L4 Q1 D, D8 b5 U: k
#include
* `+ P; f! o3 }, M, H
#include
复制代码
( |- h7 I$ _ E; U2 i6 a$ V9 T
: L$ k) `* ^- e( g9 ` Q
服务器代码如下:
3 Y3 F }: Y* d5 X* j! o) D9 T, l
#include
3 p3 @& N6 y7 Z: e
#include
) L; o+ W! z& v# I P# n
#include
' G G) ^8 O7 v$ g; P/ m# f
#include
7 r+ K# x+ w9 c
#include
( ~: t: z1 S- t1 z( k4 C
#include
- n* _4 O( }2 T7 I9 J9 J
#include
+ K4 w# }& s" A6 J _- k0 `# \; E
#include
复制代码
4 X5 Q, b6 Q- j/ J' z3 C* B' p
7 q% {3 P, K: q0 y# O3 u
- r4 X2 D* u+ i G( P' z3 q# O
) ?7 E0 U- w& o( j; X
" h4 ^0 X5 w+ B" N+ @9 v6 ]- I- q
6 b' u3 r- f) ~4 ?& m3 \, p: S
+ t' i t" X/ _. [: z3 V" f. I
$ _2 y2 h% Q" L$ r
7 c; g& `6 F1 }) B+ d) i2 e
( |6 @+ `1 o5 O0 C
9 {( F' z3 x6 p$ d# g* K
/ d# D# `. a' L2 O- k
0 |# C' Y' x/ f6 p3 R* M
4 r( K. ?! M4 U. b' K5 I
6 z$ Z+ G9 X2 H: o. `
# z, g8 o$ d/ c0 M- `
9 A3 ~& u( _8 y5 z# C& L
8 k# d; b; J$ Y- [9 |8 D$ e
. _) `7 v+ K/ U: r2 O: J E
! j n' d6 c4 X( m. P
作者:
admin
时间:
2020-5-9 02:30
服务端:
, k$ T* U/ a% g9 }; S) S% L; }
#include <sys/types.h>
- f& f4 s7 n" t& U
#include <sys/socket.h>
! z2 m* s3 w8 K
#include <unistd.h>
! ?/ M. ?; |, ?7 d( {9 O$ `
#include <netinet/in.h>
9 O' e; D q. C
#include <arpa/inet.h>
4 ~7 C! h9 J. G
#include <string.h>
% Y6 I+ q# i/ n# M# R
#include <stdio.h>
& s3 l$ a$ U0 f4 L" @! x
int main() {
$ w, j8 N7 |! ~' d" a$ S3 Y
int sockClient;
% G& p; x" R) A6 M' l) R
struct sockaddr_in addrSrv;
# O3 u5 Y0 k' }% V( \
sockClient = socket(AF_INET,SOCK_DGRAM,0);
' f7 c: n0 @) z2 D
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
4 K* s3 ]0 B1 m; x$ E& d
addrSrv.sin_family=AF_INET;
+ ~- {+ x" l' t+ O( S: D' l0 b" y
addrSrv.sin_port=htons(6000);
( P7 f: V& }& O
while(1)
" b. E3 N! [# w# t# @
{
* u/ f; ], v1 E! ? j) i
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
! v% G) [1 q' {' b _- R
sleep(2);
, d+ t; y6 k! n3 S6 g H( `- [
}
# g2 X! ~& m! N
close(sockClient);
( N- V6 C6 [8 J+ o' |
return 0;
1 }4 P* O; }- P
}
# Q( X& ]) E% V7 f! M
' ~, D' f# w8 E( A0 r% y1 S% [
+ S" U3 R' V3 k) r
客户端:
#include <stdio.h>
+ v( B6 h) X# D" K* z' M/ w5 N `
#include <sys/types.h>
+ j2 T1 B5 V/ {; B: K
#include <sys/socket.h>
' [$ Q7 p6 C1 J. `- c( ]; f; H5 D
#include <netinet/in.h>
5 l9 H L) P4 H
#include <arpa/inet.h>
" V X0 \, p1 I6 T: @
#include <string.h>
7 |, p/ x; ^ d, ~/ c' J4 Q9 [
#include <unistd.h>
7 i7 U8 @" @- ^# m; d3 N
#include <fcntl.h>
1 h; F! H; g5 M2 v
#include <sys/time.h>
2 r; I3 E% W1 v; i/ s2 L l
#include <sys/select.h>
7 a$ e v& K9 `* J; h+ X% W: U2 X
#include <sys/ioctl.h>
3 R4 `/ \, r1 F; v& C4 z+ w
int main() {
9 x/ j. F' O+ H3 N$ Y
int sockSrv;
6 @2 \/ F' E2 h1 {4 ^9 e' [' X
struct sockaddr_in addrSrv;
! Z$ R$ R7 ^7 @) E( Z
int len;
% b. W/ B' t& w! o
char recvBuf[100];
+ b2 L: A9 l0 m- h, \
scanf("%s",recvBuf);
. g9 \& y1 l. h9 L$ Y1 F
struct sockaddr_in addrClient;
' o2 |, W. E% U' z" t1 l
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
0 u I8 _- Q6 T: c9 v& A) y
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
+ W {4 `6 L# H' F; h4 i3 J: q* @
addrSrv.sin_family = AF_INET;
9 \3 q" k1 V0 k5 _0 ]! m* Y
addrSrv.sin_port = htons(6000);
( D7 \. S5 O2 x; g( |
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
7 T; ` R0 E+ J( k2 X' K5 \( J4 x
len = sizeof(struct sockaddr);
9 T5 C7 O& N) x; c
memset(recvBuf, 0, 100);
2 E7 B* ]3 F9 ~
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
* l+ Y2 K, e) I! K
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
; C8 w. |9 X# ]2 s# V7 m
printf("Client data is:%s\n",recvBuf);
4 ?% n8 e1 ]+ W- ~$ q( a
close(sockSrv);
' Y) ^: r8 R H; S2 d( {
return 0;
2 U( r% A8 k; E0 L
}
复制代码
- m: T8 w5 }) s) P! B
0 t- v" d& k+ F- _* @. T
5 @# U: Q$ v+ {' R- I" Z+ ?/ e
8 _% C( O8 T. q( u- {0 M8 _
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2