首页 / C语言 / c语言socket编程
c语言socket编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c语言socket编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3859字,纯文字阅读大概需要6分钟。
内容图文
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;
}
原文:http://www.cnblogs.com/xkzy/p/3956177.html
内容总结
以上是互联网集市为您收集整理的c语言socket编程全部内容,希望文章能够帮你解决c语言socket编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。