您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13891|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
" I/ @* ^( q. j$ a9 K
  1. #include% O3 e1 t4 \& g
  2. #include* [) i% g8 @9 E& c% b, t8 G$ E
  3. #include
    1 |8 B- f" ?! y* b! l
  4. #include& n) j# n) N- Y% C; V+ d% e- D0 Y
  5. #include
    3 R+ D5 W% S5 E$ m
  6. #include$ ~, b( T4 I2 Q( z, {" @' r
  7. #include- F3 u1 X! G6 X( d1 E8 G& G/ ^
  8. #include
复制代码
' ]; C' }, m$ e0 r& H. R9 _& ?

# d% B3 u9 y( N/ u1 I9 ]服务器代码如下:
6 @9 [/ @. a9 K& s
  1. #include- d- \* w# k& n8 |4 U2 Z' R
  2. #include# }. ^9 J; X; o4 j, J3 E
  3. #include
    5 ?' L; X- k. v3 C7 u& U& t5 e
  4. #include
    7 w0 }. x) h' x+ p( ^
  5. #include% l( ~) c  R4 s1 @( ?; A
  6. #include
    + C! b- r) z, h( P
  7. #include
    " J) N) W/ x; v5 }# _
  8. #include
复制代码
+ b: m' y; O( ^9 a4 k
  {; G+ Z- S- e7 _
2 ]* b  C3 r  {8 m! G: `4 D
) H0 F/ Z# B6 e, m/ z2 O. o

! y3 K. Z" S4 F; N" L, U# v, U

$ ~  g! R/ @3 F) N1 B; v$ R7 v9 y
, T( ]) J+ H# B+ s

0 J  M* H! j8 f. J" {# E
% U" L( b0 n5 Y' P/ b% G  K
6 f7 @( W" @& y# V8 K- K

* O& ?4 h; W: r7 f: H/ w) L$ r: ^
6 P; h! u# |( e* a; t  X8 }
( ?5 l, e% t. W2 E* j" I' y
/ \+ D0 }; I2 I

4 `- c& Z& T9 q: w, d2 q
; U; V( }7 @/ s0 h5 S- P

" m/ t+ u; D6 p  Y6 f; f

4 g) F( u6 Q2 X4 d  Q  M; O' x) P, k% v% B+ S; Y
2 T8 w! S+ |( q7 X5 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:5 M9 w) s, c+ k' J4 }# {# }% f
#include <sys/types.h> 8 F8 n; s4 M1 w$ p2 @
#include <sys/socket.h> 
( S: [3 s$ w* F; N* u: J#include <unistd.h> 
1 [1 X" J; b2 A% N" t( j- D#include <netinet/in.h> 9 }( G5 g% m% l" c* p, i* _
#include <arpa/inet.h> ; P+ c! l* ]/ w+ k, n+ S
#include <string.h> ! D5 q+ t  [0 X
#include <stdio.h>  % Y8 f# f6 q) E4 U
int main() {* I$ u+ q0 ^" u: R% x: `2 r+ |% h
        int sockClient;( [. ?4 l. U0 P( l! z7 k
        struct sockaddr_in addrSrv;7 h" [8 z, \, m/ e  K: D
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
0 J2 i7 P. m8 f: q        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");; r# Z2 I. Q) D2 ^. @: Z
        addrSrv.sin_family=AF_INET;
4 V- z. _8 n  o( _% x        addrSrv.sin_port=htons(6000);
" e8 ^: ]- Z+ n& r        while(1)
) u$ y- J/ w$ I% s/ C! O+ q, F        {
- S0 d  e0 T3 X7 k                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
& p5 x. z9 ^) Z( O: |                sleep(2);7 E2 I) l$ ^9 h! z
        }    9 _% I8 W2 w8 n4 r9 }
        close(sockClient);  
. u6 |) ^& r: f' b3 k0 f7 g8 \        return 0; 3 C( O1 m, ^$ _2 P( R+ @: j
}6 T- q+ n# T9 q! ~+ ]: [  l
8 h. M4 v( D5 _

, P+ X: y8 f6 z1 K. ]0 M客户端:
  1. #include <stdio.h> . ]7 `8 q9 u2 A) a
  2. #include <sys/types.h> 
    & D. T/ B, U1 N; w  _
  3. #include <sys/socket.h> 
    ! T% y& C0 t0 U7 j8 C6 s
  4. #include <netinet/in.h> 
    5 i# g- D6 z  x: w5 d3 [
  5. #include <arpa/inet.h> & \5 `1 G  O, m( }/ J) r2 `
  6. #include <string.h> 
    7 a+ d  Q, |0 C
  7. #include <unistd.h> . ]/ k5 Z3 h& E' K5 k8 }( K
  8. #include <fcntl.h>   v% d3 P( v# J7 A
  9. #include <sys/time.h> 
    0 \# Y1 g4 c0 d
  10. #include <sys/select.h> 9 q0 s+ c9 z  ^
  11. #include <sys/ioctl.h>  ' i" y6 n, S6 _! u# U" X
  12. int main() {5 j# b0 I! y, j9 l+ _. }; [
  13.         int sockSrv;. P: q5 s( N# i8 Z3 g
  14.         struct sockaddr_in addrSrv;% E: o2 \0 A: O  Z! |9 u
  15.         int len;
    4 T5 {9 R# k% }7 O4 M, y- J5 w+ N
  16.         char recvBuf[100];# {, [) M- Y9 Q; p* m0 @
  17.         scanf("%s",recvBuf);
      e2 i9 y- B# x
  18.         struct sockaddr_in addrClient;
    , V; l4 ^4 z( w+ r! e+ Z5 ^9 u
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    6 e% n& \, `+ H( `0 {' `2 h
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);8 u- c7 g1 K0 o
  21.         addrSrv.sin_family = AF_INET;$ K6 ^8 R2 q/ e0 r8 s$ [% Y
  22.         addrSrv.sin_port = htons(6000);0 s0 I% d! B9 P  W5 J5 g
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));7 e7 l" p/ U, h( L+ t5 R
  24.         len = sizeof(struct sockaddr);
      Z" N6 N) V6 d( W- I& X: Y4 y4 s
  25.         memset(recvBuf, 0, 100);
    " u: j5 l( w2 ]  _8 B- R$ W5 o+ \
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);% S8 t0 M: w6 Y' q/ r1 I* B4 u  ^
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    - \. f$ [, f" s. u( }
  28.         printf("Client data is:%s\n",recvBuf);( D8 W- J. o5 s- R8 d5 m( `: T
  29.         close(sockSrv);
    ) f3 p& I# U- O+ z9 Y0 F9 _, _. M
  30.         return 0;
    ) N1 {" y$ f# I6 W! R
  31. } 
复制代码

4 Y1 w, q! ~2 I* O& M7 j  L, K  z- L7 p: ^
- Z4 H; g5 q/ V# \
; c# T7 L" X- N, A- G
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 07:07 , Processed in 0.053710 second(s), 18 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!