socket
来源:互联网 发布:淘宝上的摩托车能买吗 编辑:程序博客网 时间:2024/06/05 02:17
dispatch_async(dispatch_get_global_queue(0,0), ^{
sendMsgSocketfd = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in addr;
const char *ipadd = [IPAddrcStringUsingEncoding:NSUTF8StringEncoding];
memset(&addr,0,sizeof(addr));
addr.sin_family= AF_INET;
addr.sin_port= htons(port);
//这个函数转换字符串到网络地址,第一个参数af是地址簇,第二个参数*src是来源地址,第三个参数* dst接收转换后的数据。
inet_pton(AF_INET, ipadd, &addr.sin_addr);
int connect_fd =connect(sendMsgSocketfd, (structsockaddr*)&addr,sizeof(addr));
if (connect_fd == -1) {
NSLog(@"connect error :%s",strerror(errno));
}
NSLog(@" >> Successfully connected to");
const char *cMsg = [msgcStringUsingEncoding:NSUTF8StringEncoding];
send(sendMsgSocketfd,cMsg , strlen(cMsg),0);
//buffer malloc 开辟一块这么大的内存空间
char *buffer =malloc(MAX_Buffer);
//接收
recv(sendMsgSocketfd, buffer, MAX_Buffer,0);
NSString *str = [NSStringstringWithCString:bufferencoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"client receive msg %@",str);
});
close(sendMsgSocketfd);
});
}
/*
1.打开socket,获得描述字 socket()
2.绑定IP地址 bind()
3.开始收听连接 listen()
4.同意连接 accept() 同步函数,会卡死当前线程,直到有客户端连接时
5.接收数据rev()
6.close
*/
+(void)buildServer:(int)port withMsgBlock:(MsgBlock)block{
dispatch_async(dispatch_get_global_queue(0,0), ^{
serverSocketfd = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family= AF_INET;
addr.sin_port= htons(port);
addr.sin_addr.s_addr= htonl(INADDR_ANY);
int bindSuccess = bind(serverSocketfd,(structsockaddr*) &addr,sizeof(addr));
if (bindSuccess == -1) {
NSLog(@"bind error : %s",strerror(errno));
}
listen(serverSocketfd,10);
NSLog(@"-------waiting for client`s request--------");
while (1) {
int connectfd =accept(serverSocketfd,NULL,NULL);
if (connectfd == -1) {
continue;
}
char *buffer =malloc(MAX_Buffer);
//char buffer[MAX_Buffer];
//接收
recv(connectfd, buffer,MAX_Buffer,0);
NSString *str = [NSStringstringWithCString:bufferencoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
block(str);
});
const char *sendmm ="hello world";
send(connectfd,sendmm ,strlen(sendmm),0);
NSLog(@"send success");
close(connectfd);
}
});
}
0 0
- socket
- socket
- Socket
- Socket
- Socket
- Socket
- Socket
- Socket
- socket
- Socket
- Socket
- Socket
- Socket
- socket
- socket
- socket
- socket
- socket
- 使用httpclient实现http链接池与使用HttpURLConnection发送http请求的方法与性能对比
- Service二——跨进程访问AIDL
- js解析json
- 【旧代码整理】controller继承Action渲染输出html部分
- 数组和其他容器的区别
- socket
- Android工具类之颜色工具类 包括常用的色值
- 源码安装nodejs
- serialVersionUID的作用
- CF 609B The Best Gift
- 强烈推荐android studio用的几个插件
- 数字金额大写转换
- 松式爆炒土豆丝
- Android 实现自定义View