1. [代码][C/C++]代码
服务端:
//
// main.m
// server
//
// Created by mac on 13-4-15.
// Copyright (c) 2013年 mac. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <sys/types.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
int CreateServerSocket(short port)
{
int socket_server=0;
socket_server=socket(AF_INET,SOCK_STREAM,0);
//填充IP与端口
/*
struct sockaddr_in {
__uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
*/
struct sockaddr_in sAddr = {0};
sAddr.sin_len=sizeof(sAddr);
sAddr.sin_family=AF_INET;
sAddr.sin_port= htons(port); //本机字节序转网络字节序
sAddr.sin_addr.s_addr=INADDR_ANY;
//绑定 //(struct sockaddr *)&sAddr强转
if (bind(socket_server, (struct sockaddr *)&sAddr, sizeof(sAddr)) != 0) {
return 0;
}
//监听
if(listen(socket_server, 100) != 0){
return 0;
}
return socket_server;
}
//接收连接并返回客户端的scoket
int AcceptClientSocket(int ServerSocket)
{
int ClinetSocket=0;
struct sockaddr_in cAddr = {0};
socklen_t len=sizeof(cAddr);
ClinetSocket = accept(ServerSocket, (struct sockaddr *)&cAddr, &len);
char * ipaddress=inet_ntoa(cAddr.sin_addr);
printf("accept--->%s,%d",ipaddress,cAddr.sin_port);
return ClinetSocket;
}
void Message(int socket)
{
char send_Message[1024]="hello\n";
char recv_Message[1024]={0};
send(socket, send_Message, strlen(send_Message)+1, 0);
while (1) {
recv(socket, recv_Message, sizeof(recv_Message), 0);
printf("<-----%s",recv_Message);
printf("----->");
fgets(send_Message, sizeof(send_Message), stdin);
send(socket,send_Message,strlen(send_Message)+1,0);
}
}
int main(int argc, const char * argv[])
{
short port=9898;
if (argc>1) {
port=(short)atoi(argv[1]);
}
int ServerSocket = CreateServerSocket(port);
if (ServerSocket == 0) {
printf("Cerate scoket error\n");
return 0;
}
printf("Cerate scoket ok!\n");
while (true)
{
int ClinetScoket=AcceptClientSocket(ServerSocket);
if (ClinetScoket == 0)
{http://www.enterdesk.com/special/shouhui/
printf("Client connect error\n");
return 0;
}手绘图片
printf("Client connect ok.....\n");
Message(ClinetScoket);
return 0;
}
// //接收连接
//// accept(<#int#>, <#struct sockaddr *restrict#>, <#socklen_t *restrict#>)
// struct sockaddr sAdd2={0};
// socklen_t len=sizeof(struct sockaddr);
// accept(ServerSocket, &sAdd2, &len);
return 0;
}
客户端:
//
// main.m
// client
//
// Created by mac on 13-4-15.
// Copyright (c) 2013年 mac. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <sys/types.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
int CreateClinetSocket()
{
int ClinetSocket = 0;
ClinetSocket = socket(AF_INET, SOCK_STREAM, 0);
return ClinetSocket;
}
int ConnectionToServer(int client_socket,const char * server_ip,unsigned short port)
{
struct sockaddr_in sAddr={0};
sAddr.sin_len=sizeof(sAddr);
sAddr.sin_family=AF_INET;
inet_aton(server_ip, &sAddr.sin_addr);
sAddr.sin_port=htons(port);
if (connect(client_socket, (struct sockaddr *)&sAddr, sizeof(sAddr))==0) {
return client_socket;
}
return 0;
}
//client
void Message(int socket)
{
char send_Message[1024]="0";
char recv_Message[1024]={0};
while (1) {
recv(socket, recv_Message, sizeof(recv_Message), 0);
printf("<-----%s",recv_Message);
printf("----->");
fgets(send_Message, sizeof(send_Message), stdin);
send(socket,send_Message,strlen(send_Message)+1,0);
}
}
int main(int argc, const char * argv[])
{
const char * server_ip="127.0.0.1";
short server_port=9898;
if (argc>1) {
server_ip = argv[1];
}
if (argc>2) {
server_port=(short)atoi(argv[2]);
}
int client_socket= CreateClinetSocket();
if (ConnectionToServer(client_socket,server_ip, server_port)==0) {
printf("Connect to server error\n");
return 0;
}
printf("Connect to server ok\n");
Message(client_socket);
return 0;
}
c语言socket编程
时间: 2024-10-01 13:36:26
c语言socket编程的相关文章
计算机网络|C语言Socket编程,实现两个程序间的通信
C语言Socket编程,实现两个程序间的通信 server和client通信流程图 在mooc上找到的,使用Socket客户端client和服务端server通信的流程图?? 服务端server 服务端需要 "两个"套接字 : 1.服务端套接字serverSocket 2.客户端connect连接请求时,发来的套接字clientSocket 按流程图来看, server服务端主要就是实现下面几个步骤: 0.WSAStartup初始化 //这个东西也不知道是什么鬼,反正就是要初始化一下,
C语言SOCKET编程指南
1.介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等… 好在我已经将这些事完成了,我将和所有人共享我的知识了.如果你了解 C语言并想穿过网络编程的沼泽,那么你来对地方了. 2.读者对象 这个文档是一个指南,而不是参考书.如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者.但这不是一本完全的 socket 编程书. 3.平台和编译器
多种语言socket编程集锦—win32
原文 http://www.blogjava.net/huyi2006/articles/263831.html 借此地方整理以下socket编程的多种语言的实现,socket可以跨平台的通信,因此多语言.多平台下的实现有必要了解的.代码都是源自网上,感谢网友的分享. socket编程在windows下的C语言实现,dev C++下编译通过编译时设置编译选项 工具-->编译选项-->编译器,勾选在连接器命令行加入以下命令,在对话框中填-lwsock32//server.c#include &l
C语言Socket编程(计算机网络作业)
最近我计算机网络课程要做作业了,没办法跟着老师一步一步的写C语言的代码,使用的计算就是Socket通信发送消息:代码实现的功能很简单,客户端向服务器端发送消息,服务器端接收客户端发来的消息,并且输出显示到屏幕上:代码中的每个方法的返回值都应该做判断出错情况,以保证程序的稳定性,这里只是测试代码. 老师是录制的视频讲解的,其他其中使用的到的方法要求我们自己去查相关的MSDN资料库,如果有不懂的,就自己上网查. 服务器端接收代码: #include <Winsock2.h>#pragma comm
C语言socket编程——linux环境
先写一个服务器端的监听程序,功能室从客户端读取字符,接收到后告知客户端"I got your message: "+收到的消息:server.c ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Go语言系列(九)- Socket编程和Redis
Socket编程 一.socket编程概述 什么是socket编程? socket编程是计算机PC机器上2个程序通过一个双向的通信连接实现数据的交互,这个连接的一端就是一个socket.socket的翻译意思上还有个插座的概念,其实,也可以很形象的比喻为插座插上去了就有通电了(网络通了).socket编程其实作为UNIX系统的进程间通信机制,通常称为“套接字”,用来描述IP地址和端口的集合,在unix系统下是一个通信的句柄(文件描述符,因为UNIX下所有都是文件). UNIX socket编程的
Go语言之Go语言网络编程
GO 语言网络编程 Go 语言Socket编程 TCP Socket Go语言的 net 包中有一个 TCPConn 类型,可以用来建立 TCP 客户端和 TCP 服务器端间的通信通道,TCPConn 类型里有两个主要的函数: func (c *TCPConn) Write(b []byte) (n int, err os.Error) func (c *TCPConn) Read(b []byte) (n int, err os.Error) CPConn 可以用在客户端和服务器端来读写数据.
winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下代码片段只能运行在windows下.windows API中的socket编程部分叫做winsock. 你电脑上做出的任何网络通信背后基本上都有socket,它是一个网络的基本组成部分.举个例子说当你在浏览器键入www.google.com的时候,socket连接到google.com并且取回那个页面然后才
Go语言TCP Socket编程
Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分.在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是"高频+刚需",而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的. 网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,s