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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
1 [3 a. y; I- a/ k* \) r2 ^
  1. #include5 }3 K3 C# d( Z5 W9 f& B% ~
  2. #include
    ; o$ a9 A) _$ w9 u3 x2 Z+ N0 m
  3. #include
    6 m9 K$ z( F( @5 K# I
  4. #include, V7 k6 \! v8 {+ _0 L& r+ R' E
  5. #include3 Z! T  _0 F+ q4 e
  6. #include% ~# V1 Z$ N4 W
  7. #include6 X" }- z& U& }- Y1 B! [" [
  8. #include
复制代码

& V/ \" E. v4 {
1 p# e, _6 N- z! ?: m) v服务器代码如下:
: b7 P0 p" G- B- m6 L1 z! O
  1. #include  Z8 J4 Y0 b" D* {2 k
  2. #include
    ( v4 l( U. K  S
  3. #include- _" W  ^6 N  S( \
  4. #include
    . Q; B# N: v. t4 Y: a$ v% Y" t
  5. #include4 O1 R, @5 i3 V# u" d$ X$ ?) j
  6. #include
    ( Z2 ~7 t6 S% f& ]: D& p' P& b
  7. #include% Z. l# K$ l8 X4 m
  8. #include
复制代码

' W' x1 u$ G7 x- U+ F8 P9 X, m6 }5 J" N
* P, X# Z6 N$ o1 v8 ?, E

$ c0 a% I' p0 d) c& d- w2 x6 ~2 g! L+ x4 b0 s" D( Z# _+ K

& q. @. n- b7 ?9 M/ Q" Y; P/ \3 d2 s+ Q; B
! Z7 x& _" U) R2 \* u" h- K- ^4 S
& [( \  K6 X/ n; u  E5 U

" G$ H! T& ~4 B/ g8 o* m: F! I
3 Q: K/ o' b" F2 N: W

- N9 C2 ~) i7 e0 S  \( \1 r0 |  P2 M
' F' l* Y4 m) [$ D

$ k; X1 o6 U8 m9 T

+ E5 i* H# P0 l* r* _: m* C
5 Q- m6 x6 m7 D1 G7 G' E
0 o7 w9 h: \+ T0 O1 a8 ~
9 G9 h# P/ n( g" O

' z9 c0 S) ]5 A8 A9 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:0 N% A- Z$ v$ f# T3 v8 t& J
#include <sys/types.h> 
1 y( Z+ B- i1 q$ [( R# b#include <sys/socket.h>   i* T' B, U, F! R, _* o, F
#include <unistd.h> " x& ]3 R; l' f" b0 }4 h$ o/ ?
#include <netinet/in.h>   H2 l  ?& M  W/ u) ?8 ^- V
#include <arpa/inet.h> 9 ^7 j2 \6 Y( s' i) l4 h4 z7 H
#include <string.h> 
- O% B6 D' m* b: V#include <stdio.h>  , E- B9 z' Y2 ~2 Q! `" f! f, k) c
int main() {
6 Z6 E3 P" G$ W( B6 [        int sockClient;
/ n* ~: p3 E5 ^; z" o- l+ A        struct sockaddr_in addrSrv;
9 K/ r# P  Q* x: K& m1 g5 h        sockClient = socket(AF_INET,SOCK_DGRAM,0);8 T+ a" g$ d- }& b
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");: p. r" s. n, L! p( ~( y* x
        addrSrv.sin_family=AF_INET;
7 _& e2 v. D) t# f/ b        addrSrv.sin_port=htons(6000);3 D, ?3 U3 E) e) M
        while(1): t( r9 ]" |5 y  L
        {' Y% C& K7 G# m/ S, ]. ?7 m& w
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
8 L. t6 P# }" K                sleep(2);( `8 c$ m) x& x7 [" J7 y* }
        }    
6 ?7 g" U0 B; m1 _        close(sockClient);    {  K6 [7 C9 v# P' G
        return 0; : D, y( E! D6 b' D4 S6 v3 Z7 T: a
}# t; ?+ Y$ J4 F& V0 \& @* {
* I( X: u* c5 f3 b! }& l
  ^* U$ b! H0 Q/ v
客户端:
  1. #include <stdio.h> . C4 w0 V' f( L, O
  2. #include <sys/types.h> . D: C* L! N  x- h
  3. #include <sys/socket.h> * y; y. F: h% P) H. C8 ]
  4. #include <netinet/in.h> 
      L5 s! a9 O' x# @1 o% L7 l  ^
  5. #include <arpa/inet.h> 
    % u7 _$ W2 \7 w% S& Y% u9 V8 R
  6. #include <string.h> 
    5 O  e$ y* i0 m( E1 `2 K, x
  7. #include <unistd.h> 0 g( I, A! u9 T; E, y- l( \
  8. #include <fcntl.h> ' k8 ~( ^  S( H5 O/ }, G9 ]" @6 B
  9. #include <sys/time.h> 7 i1 w0 @) ~2 [; [* K! K! u2 h. W
  10. #include <sys/select.h> 
    4 ~. U  b: `% x
  11. #include <sys/ioctl.h>  
    4 C0 W7 j" k6 A  s# P/ _6 l
  12. int main() {) f2 }8 L/ o2 s: A( T, c( Z/ b4 j
  13.         int sockSrv;
    ( `; S8 m4 i! O) j
  14.         struct sockaddr_in addrSrv;" P1 S+ t' ?( ]
  15.         int len;
    & n0 }0 V9 g0 I8 n% F5 B# D6 \
  16.         char recvBuf[100];3 W( N- {  E( ]5 Y6 ^0 o6 Y
  17.         scanf("%s",recvBuf);
    ! @7 i, f0 U, J, W* Q8 s" Z& n4 `
  18.         struct sockaddr_in addrClient;
    9 b) _0 U0 E* S/ p( M. _
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ; u4 i& O" t' B6 s; A8 i" F/ @# Y
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);! S8 H% H# U: J' c. h
  21.         addrSrv.sin_family = AF_INET;
    5 y7 {9 ?1 L( h: _+ _& B6 k7 l3 y
  22.         addrSrv.sin_port = htons(6000);
    ) U% G) b% r; j
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    / k" X  ]0 ^% a: c# o. h
  24.         len = sizeof(struct sockaddr);
    6 b2 Z5 Q6 F! J+ H+ C
  25.         memset(recvBuf, 0, 100);$ z( i  U& ~0 K; L" L
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);% _* t& w- D1 M' O6 ^
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));3 q% q. c2 B# `! L+ h: S# [/ p) Y
  28.         printf("Client data is:%s\n",recvBuf);* R$ v: I* Q, d8 G: d
  29.         close(sockSrv);
    6 q& h6 |& y+ P4 e+ |- t
  30.         return 0;& O3 R$ @$ W5 G0 S9 U
  31. } 
复制代码
! u  n6 n$ i" Z. M; ^% z1 Y

1 G+ m* t. g) h1 f9 {4 v! h
6 K3 o# n: Z6 ]: _+ g* j9 B3 ^$ R0 t1 I* v& Q  g( d
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 11:38 , Processed in 0.058795 second(s), 19 queries .

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