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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
) v9 o+ c, s, ^# F# @# N6 c( h0 d5 \
  1. #include& O. }* F% f; S7 Y" ~1 X
  2. #include
    6 G3 _. T5 a7 D" P1 o: z
  3. #include- p5 q/ u. x- ?7 \6 p& g, r2 U  {
  4. #include4 g1 e) @! m) v, ~
  5. #include9 o( Y, ?& f! k- i0 O
  6. #include' P% H, g. D1 l% Z2 x4 U1 @( l
  7. #include1 J, _/ v$ g8 f- k5 |  p
  8. #include
复制代码
8 r' M) V/ o5 U$ ]% J  g( R" }

1 b9 @$ s4 E/ l; M8 Q. L服务器代码如下:( r  I  C, @, W) N; L# C" u; M
  1. #include
    % A1 V+ M- q5 P* S) i
  2. #include1 D0 i8 J# Z$ J3 w/ v: ~0 z
  3. #include! R+ ~3 ?2 d& e( M9 |# C
  4. #include/ y* A$ i- ^4 X' L
  5. #include( w9 a2 s. M' W2 p/ [1 T% {/ j( |
  6. #include
    2 l% }/ P/ s$ _7 A
  7. #include
    - Q( R% E3 W/ D; ~- O
  8. #include
复制代码
$ b& P: V3 O9 k, ], i  ]
7 ~  ?* T$ Y; _" m& |! P9 K

( H7 \/ \2 G/ _- N1 Z  m

. j7 q( v' N4 ]  ?0 _5 c* y' ?0 m1 {2 ?$ ~5 Z3 x) ~

/ M6 c2 {; U7 C5 p7 O
9 Y* G* O. O% r5 }8 y$ X) ~
+ G1 U) w$ o5 y* s  {4 q& F7 }
) o* V8 W9 S) ~4 h* Q( A. e

& w. T8 J$ M. T: h; g/ ~. a( s$ R$ t% \( \: ~; z0 y: w9 C+ c
1 G" n$ T; M- G/ |- G9 A! E4 M

( u8 n. D' q/ Q- l

7 v8 U7 ^' f# e
( x" X" r: X2 u' h% [/ ?4 h

6 j3 B7 e% J  ]# H2 M( I( v1 ?8 ]1 t, n3 O% G/ s  [% t+ B, f5 q2 W; j( L
$ I. w( t1 F0 a& w! f3 t
9 G8 o/ R) i( S5 v/ f$ q" y
/ a  I7 @1 B8 r% p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
* Z" |, K/ x9 q9 Q7 W#include <sys/types.h> 
' S' N! ^7 T5 j$ u1 h7 Y0 g#include <sys/socket.h> ) z7 T: V* T8 U" H% k" }" l
#include <unistd.h> 6 ~& |/ b& ^8 S% x2 u& h, c) X
#include <netinet/in.h> + [+ V4 @& a' q* {( W# _
#include <arpa/inet.h> 
+ n7 z3 E; g5 a1 g#include <string.h> 
; A# Q# U8 h+ a( e, \4 E#include <stdio.h>  
: c) x5 x4 u) _1 vint main() {
% b: S' Q# R2 a+ \* k8 T' {        int sockClient;
& G  J* D+ L- f+ j# N1 b        struct sockaddr_in addrSrv;
2 j5 T4 _. K( t' F        sockClient = socket(AF_INET,SOCK_DGRAM,0);
- F2 O: E; W6 [7 X  g        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");  [# l; W' }( r4 P
        addrSrv.sin_family=AF_INET;1 G+ w1 o; @( v# U' r; _& V
        addrSrv.sin_port=htons(6000);
, L5 H/ a3 |/ p0 ]. R. X        while(1)
! d- e8 ^  W) m  t0 b( q        {1 d! A5 |" e9 h6 U  }
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));/ U# H; z5 _3 v/ Y5 m. ]
                sleep(2);) E+ t8 P# q( U: \# m/ k5 y+ E+ H
        }    
" k3 Q( I5 e( L8 p- H! ]- [        close(sockClient);  / i$ z3 k7 I. w' n) J
        return 0; 
4 G+ e4 _1 t( o}
0 w5 P& u" P/ y# I2 `
7 p+ [& P& G: b+ u) K/ g$ C9 B8 e
& s8 B: x8 [2 w7 v2 I) D0 k客户端:
  1. #include <stdio.h> : G7 B' O" I0 z+ |4 {: i3 E
  2. #include <sys/types.h> 1 x* V' p5 T$ k& d% C% S1 a
  3. #include <sys/socket.h> $ m2 j! U) e; E1 K9 v1 z, W
  4. #include <netinet/in.h> 
    9 {  L% |$ k0 l1 \, @
  5. #include <arpa/inet.h> 
    * \/ s; F& r; Z% Q5 o
  6. #include <string.h> + T- B: [" s! v: i" i6 [
  7. #include <unistd.h> 5 N( s- M6 x& o6 n6 D* x4 |- ]6 K
  8. #include <fcntl.h> / |" P3 k3 f) }# W  E
  9. #include <sys/time.h> 
    . B" k, f$ D2 q) u% ~
  10. #include <sys/select.h> 5 W! W$ C+ @8 v: s1 T- \6 u, N
  11. #include <sys/ioctl.h>  3 |- s* M8 b/ W" Q4 J
  12. int main() {
    : N3 T. J4 p2 K3 y- `" U# Z
  13.         int sockSrv;
    1 E/ f: V* b; r' b4 A
  14.         struct sockaddr_in addrSrv;
      Z" Q9 y, M6 f
  15.         int len;
    0 l6 _( Z7 _- M9 l
  16.         char recvBuf[100];. f: Y" ~% [7 a8 E. Q
  17.         scanf("%s",recvBuf);
    4 n! E. s1 S& K7 ~  N
  18.         struct sockaddr_in addrClient;
    + q- U- |$ J  j4 w  x* C: s; J+ `
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    6 F9 `6 o) g+ F, ^
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    # u+ ^7 V. \/ o" X& t
  21.         addrSrv.sin_family = AF_INET;7 w: g3 }: S" }  g# N+ ?
  22.         addrSrv.sin_port = htons(6000);
    & P( L0 O. L2 J9 h7 r- Q1 m
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));/ d5 w6 g# J  j; b- s. I
  24.         len = sizeof(struct sockaddr);) M1 E# b4 E! ?; C+ k+ s; y
  25.         memset(recvBuf, 0, 100);: v. T3 i) ]( w# Q
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);3 J$ y2 ?3 e/ {
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    " V; z+ m3 F; X
  28.         printf("Client data is:%s\n",recvBuf);
    0 G6 e/ Q5 t1 i% o7 G
  29.         close(sockSrv);
    ( F' I. Y; J& A1 E
  30.         return 0;
    3 Q# b' H5 W8 x: y
  31. } 
复制代码

+ g; p/ P1 f4 n8 d( u- {0 }  I% S) g

0 d( [* P* ~2 z* c1 I) G% O* w9 [4 M3 t1 n" Y" @* ^
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 09:47 , Processed in 0.128722 second(s), 19 queries .

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