cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
5 C q# Z6 }) N) J0 r0 u0 e
#include
( `; J f# R7 z7 k* P% m
#include
9 e6 j7 L, T, `
#include
; w8 W7 L( g3 l2 g; [, Q8 l
#include
* u9 a) q6 ], E0 ~! R) _! }8 d
#include
' z( ]0 R0 O9 I" d, l
#include
, ~6 X# a: p' R3 N% Z' d
#include
- d) V }' \ N5 X( A9 [3 ` e
#include
复制代码
7 h+ Q; v& J6 ~4 ^8 y$ h
4 L$ Z: Y7 o8 Q$ r& }! M9 _
服务器代码如下:
G; ~' U+ n3 i" v- q* J( k( z$ P, v& L* L
#include
$ W; U! L1 y7 i( e$ I7 c
#include
* W9 D4 A% h: X
#include
0 l% ]; C+ R$ U) M1 F* Y6 N
#include
" f! B$ U9 E9 q( {
#include
9 t% g0 ~5 M: g' Z3 [
#include
6 T2 R8 L3 E6 b& T$ |. M1 |6 b4 E* O/ l
#include
- C3 \2 {- L9 m* v2 ?) w
#include
复制代码
, q4 a) G* M' D" v$ `8 u ^, }
+ X$ i# Y: d# A7 }) \! r! a# s! O
! a; V! J- @+ v& N
l7 u* k' {! J$ X& N$ ?0 U; t+ o
7 _- z* V, c8 k- o+ o
/ n( _! G8 t% ~4 x, }
4 A w L$ `+ Z5 _5 I2 ]* g
& x# Z$ B0 h' y% ?' h
: _! p8 b0 g Z; v
7 S6 w: S: n% ?$ P. e2 l7 \
* w, }& z7 T0 `$ {$ B5 T; F5 G
+ B ^0 c, `# w" t$ N
/ T8 B1 G( a: Y
5 u* J9 A2 C8 j
$ V6 \0 \( D# ]9 I8 Z3 p
, u) S" k, ]& r5 h5 _
: f- c* K1 Y, {6 l5 H4 `" y
1 J% g: q& _, W; H% y3 ?% K" G
) C' Y& B9 @& K E) _5 _; q
. m& a' o7 q/ X6 ^5 Z; F5 @
作者:
admin
时间:
2020-5-9 02:30
服务端:
# I4 o; v! k% M7 t
#include <sys/types.h>
! ^: @/ {! J' Q, K
#include <sys/socket.h>
& M2 ^6 n3 t# J3 m
#include <unistd.h>
) o+ D+ a% v4 M- \) s7 m( E# {2 V
#include <netinet/in.h>
$ j) B& v' h0 B+ B* d1 b, L2 _/ d
#include <arpa/inet.h>
6 [7 ?& }) \( |& K
#include <string.h>
: O$ }8 [: N+ z' Y' j
#include <stdio.h>
3 P+ ~8 b' E; T
int main() {
; U0 j g' z! g! U' F
int sockClient;
& {& I T9 G; r j+ G: `
struct sockaddr_in addrSrv;
/ c# n+ v1 e3 O
sockClient = socket(AF_INET,SOCK_DGRAM,0);
/ C; _8 ?) C( j. o5 Q
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
: b8 L. T% d: p% T# s
addrSrv.sin_family=AF_INET;
; {" [$ ]9 G( @& M/ x% H& M
addrSrv.sin_port=htons(6000);
1 u; [1 k8 k7 E' u
while(1)
$ {4 E/ _6 c! l& j$ P
{
; Q( Y* g) k* i$ `) _( d8 [
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
; w2 \! O% F1 r* C
sleep(2);
5 ]4 ]$ d" G- m
}
^9 c$ z" N- {" A" f3 z: x5 v* i
close(sockClient);
' i# F, U [0 \" \
return 0;
) _! y1 |! P/ \8 f# ^) H% | Q
}
+ `1 w( u% w: \9 U( B
$ F8 S: | L0 B* x( T
2 ?) o$ \/ s+ u% u7 f8 m' _
客户端:
#include <stdio.h>
7 @* P& @2 l3 `7 w# k! H9 p
#include <sys/types.h>
/ R4 V+ }1 R0 M
#include <sys/socket.h>
1 Q1 X* T0 h" [
#include <netinet/in.h>
* V8 g/ u8 t" M7 ~% U9 P* i
#include <arpa/inet.h>
+ r Y* g" _% q: y! M& \$ s i- O9 r4 Y
#include <string.h>
3 l2 M9 e) _- C: x& t
#include <unistd.h>
6 T, e+ L3 s. b
#include <fcntl.h>
7 u' B) ?: e4 w7 a# j
#include <sys/time.h>
7 \3 D& w& X# m4 G3 Y8 r
#include <sys/select.h>
+ z2 I3 X4 F+ H
#include <sys/ioctl.h>
# t/ t: x1 ^8 T
int main() {
( k3 ~2 G, K! H0 { p
int sockSrv;
; S3 S, p7 l" `9 s! Q7 ]6 g& ~9 |
struct sockaddr_in addrSrv;
% H/ p* S( L" Q1 G
int len;
2 ]% L I6 d# \3 N
char recvBuf[100];
: a- ^1 c2 t0 c8 u3 H& _
scanf("%s",recvBuf);
@& u+ J6 t6 W8 V
struct sockaddr_in addrClient;
% g) r, g+ ^8 V c+ N
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
7 Y& o6 D r8 Y& P9 Z! T
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
; r/ D7 ]9 [9 K( r- f, P
addrSrv.sin_family = AF_INET;
( S, n. E! m5 H0 x, o- D- ~, z
addrSrv.sin_port = htons(6000);
0 c [, z, d6 C7 r
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
2 A4 [# A* _; R. C; W4 a3 ^
len = sizeof(struct sockaddr);
2 G/ f+ [ M( Q! C$ o6 G9 n# |
memset(recvBuf, 0, 100);
8 R4 I* S( J6 r; X% I
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
4 E( A+ O Z. \$ E: Q/ L% p
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
6 p5 T8 O; B) ~9 `( `& |
printf("Client data is:%s\n",recvBuf);
/ B$ ~' G" L5 y9 A1 Z a
close(sockSrv);
1 I+ U2 v- M! N3 _- t! m4 `* V
return 0;
9 U% I( M8 ?1 Y, @& C
}
复制代码
9 m% z) e! a2 T* ] c8 @
4 O6 k$ Q! \' \4 c
! V- N! U/ N2 z1 X9 s$ x! J$ D
, @* `0 ]) B! j3 ~
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2